0

What is happening:: My date picker is allowing me to enter the date

What i am trying to do:: How to make sure the date picker shows (month,date,year) only greater than or equal to present one

DATE PICKER IMPLEMENTATION:

//*******Date picker implementation******(Start)***//
    public void selectDate(View view) {
        DialogFragment fragment = new SelectDateFragment();
        fragment.show(getFragmentManager(), "DatePicker");
    }

    public void populateSetDate(int year, int month, int day) {
        txtDateId = (TextView) getActivity().findViewById(R.id.txtDateId);
        txtDateId.setText(month+"/"+day+"/"+year);
    }

    public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final Calendar calendar = Calendar.getInstance();
            int yy = calendar.get(Calendar.YEAR);
            int mm = calendar.get(Calendar.MONTH);
            int dd = calendar.get(Calendar.DAY_OF_MONTH);
            return new DatePickerDialog(getActivity(), this, yy, mm, dd);
        }

        public void onDateSet(DatePicker view, int yy, int mm, int dd) {
            populateSetDate(yy, mm+1, dd);
        }
    }
    //*******Date picker implementation******(End)***//

3 Answers3

1

Set DatePicker dialogue to current date and you will be fine like this

date.getDatePicker().setMaxDate(System.currentTimeMillis());

Hope it helps ... :)

Umair
  • 6,366
  • 15
  • 42
  • 50
0

Try this. Hope it helps !!!

Calendar calendar = Calendar.getInstance(); 
int currentYear = calendar.get(Calendar.YEAR); 
int currentMonth = calendar.get(Calendar.MONTH); 
int currentDay = calendar.get(Calendar.DAY_OF_MONTH);

DatePickerDialog datePickerDialog = new DatePickerDialog(this, listener, currentYear, currentMonth, currentDay);  
 DatePicker dp = datePickerDialog.getDatePicker();  
dp.setMinDate(calendar.getTimeInMillis()); 
return datePickerDialog;
SAM
  • 418
  • 3
  • 12
  • 1
    Please consider including some information about your answer, rather than simply posting code. We try to provide not just 'fixes', but help people learn. You should explain what was wrong in the original code, what you did differently, and why your change(s) worked. – Andrew Barber Dec 30 '14 at 14:43
0

First define these variables :

private int current_year, year;
private int current_month, month;
private int current_day, day;

Then, just get the current date like this and assign the value in onCreate method :

final Calendar c = Calendar.getInstance();
current_year = year = c.get(Calendar.YEAR);
current_month = month = c.get(Calendar.MONTH);
current_day = day = c.get(Calendar.DAY_OF_MONTH);

At the end, Just replace your dialog with the below dialog : DatePickerDialog datePickerDialog = new DatePickerDialog(SignUpActivity.this, new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int setYear, int setMonth, int setDay)
            {

                year = setYear;
                month = setMonth;
                day = setDay;
                btnDOB.setText(new StringBuilder().append(day).append("/").append(month + 1).append("/").append(year));

                etContactNumber.requestFocus();
            }

        }, year, month, day)
        {
            @Override
            public void onDateChanged(DatePicker view, int mYear, int mMonth, int mDay)
            {
                if (mYear > current_year)
                    view.updateDate(current_year, current_month, current_day);

                if (mMonth > current_month && mYear == current_year)
                    view.updateDate(current_year, current_month, current_day);

                if (mDay > current_day && mYear == current_year && mMonth == current_month)
                    view.updateDate(current_year, current_month, current_day);

            }
        };

        datePickerDialog.show();
Deep Mehta
  • 1,237
  • 2
  • 11
  • 17