3

I am working on DatePicker in android 1.5. I am trying to set Maximum and minimum date.Minimum date should be the current date and maximum date should be the date which I will supply from string as maxYear, maxMonth, maxDay.(Suppose Todays date=30/12/2011, but it selects 29/12/2011)

Everything working fine with minimum date.As it shows current date only.But on selection using minus button on picker, it selects a date less than today's date. While in case of maximum date selection it selects day, month and year more than the maximum date.

How to restrict user not to select less than minimum date and maximum date. What extra condition I have to put to make it perfect?

enter code here

///Whole code same


mport java.sql.Date;
import java.util.Calendar;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import android.widget.Toast;
import android.widget.DatePicker.OnDateChangedListener;

 public class DatePickerActivity extends Activity implements Button.OnClickListener {
 public String dateOutput=null;

final Calendar c = Calendar.getInstance();
int minYear1 = c.get(Calendar.YEAR); 
int minMonth1 = c.get(Calendar.MONTH);
int minDay1 = c.get(Calendar.DAY_OF_MONTH);

int maxYear = 2011;// 
int maxMonth = 12;
int maxDay = 29;

int minYear = minYear1;
int minMonth = minMonth1;
int minDay = minDay1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DatePicker DateDP = (DatePicker) findViewById (R.id.ad_date_picker);
DateDP.init(minYear1, minMonth1, minDay1, new OnDateChangedListener()
  {

    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
        {
             if (year < minYear)
             view.updateDate(minYear, minMonth, minDay);

             if (monthOfYear < minMonth && year == minYear  )
             view.updateDate(minYear, minMonth, minDay );



             if (dayOfMonth < minDay && year == minYear && monthOfYear == minMonth)
             view.updateDate(minYear, minMonth, minDay);


             if (year > maxYear)
             view.updateDate(maxYear, maxMonth, maxDay);

             if (monthOfYear > maxMonth && year == maxYear)
             view.updateDate(maxYear, maxMonth, maxDay);

             if (dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth)
             view.updateDate(maxYear, maxMonth, maxDay);

            dateOutput = String.format("Date Selected: %02d/%02d/%04d", 
                                        dayOfMonth, monthOfYear+1, year);
            // Log.d("Debug", dateOutput);



            Toast.makeText(DatePickerActivity.this,dateOutput,   Toast.LENGTH_SHORT).show();


        }}); // DateDP.init()



    }



 }
Josh Crozier
  • 233,099
  • 56
  • 391
  • 304
mH16
  • 2,356
  • 4
  • 25
  • 35
  • I think this post will be helpful to others, its Android 1.5, where there is nothing like setMaxdate(). – mH16 Dec 30 '11 at 04:00

1 Answers1

4

This way, i solved my problem

DateDP.init(minYear, minMonth, minDay, new OnDateChangedListener()
    {

    public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
    { 
            if (year > maxYear ||monthOfYear > maxMonth && year == maxYear||
                 dayOfMonth > maxDay && year == maxYear && monthOfYear == maxMonth){
            // Toast.makeText(DatePickerActivity.this,"max year", Toast.LENGTH_SHORT).show();

            view.updateDate(maxYear, maxMonth, maxDay);

            dateOutput = String.format("%04d-%02d-%02d", 
                 maxYear, maxMonth+1, maxDay);
           //Toast.makeText(DatePickerActivity.this,"maxYear  "+dateOutput, Toast.LENGTH_SHORT).show();

            }else if(year < minYear ||monthOfYear < minMonth && year == minYear||
                 dayOfMonth < minDay && year == minYear && monthOfYear == minMonth){


            //Toast.makeText(DatePickerActivity.this,"min year", Toast.LENGTH_SHORT).show();

             view.updateDate(minYear, minMonth, minDay );

            dateOutput = String.format("%04d-%02d-%02d", 
                    minYear, minMonth+1, minDay);

                 //Toast.makeText(ManageShowing.this,dateOutput, Toast.LENGTH_SHORT).show();                              

            }else{

             //Toast.makeText(ManageShowing.this,"else", Toast.LENGTH_SHORT).show();

             dateOutput = String.format("%04d-%02d-%02d", 
                     year, monthOfYear+1, dayOfMonth);

                    // Toast.makeText(ManageShowing.this,dateOutput, Toast.LENGTH_SHORT).show();                     

            }
            mDateDisplay.setText(dateOutput);

    }}); // DateDP.init()
Bhoomika Brahmbhatt
  • 7,404
  • 3
  • 29
  • 44
mH16
  • 2,356
  • 4
  • 25
  • 35