1

So i've read other posts, but still can not get it to work right. I want to disable the ability for someone to select a future date from my datepickerfragment. Any help would be appreciated, thanks!

[UPDATE] 4/26/15 - Solved, everyone that commented or answered - their solution works.

Function that calls datepicker:

mSearchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DatePickerFragment datePickerFragment = new DatePickerFragment();
            datePickerFragment.show(getSupportFragmentManager(), "datepicker");

        }
    });

DatePickerFragment code:

public static class DatePickerFragment extends DialogFragment
        implements DatePickerDialog.OnDateSetListener {

    public EditText editText;
    DatePicker dpResult;

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        return new DatePickerDialog(getActivity(), this, year, month, day);

    }

    public void onDateSet(DatePicker view, int year, int month, int day) {

        Intent goSearchSelectedDate = new Intent(getActivity(), SearchByDate.class);
        goSearchSelectedDate.putExtra("day", String.valueOf(day));
        goSearchSelectedDate.putExtra("month", String.valueOf(month));
        goSearchSelectedDate.putExtra("year", String.valueOf(year));
        Log.d("month", String.valueOf(year));
        startActivity(goSearchSelectedDate);

    }
}
James Jones
  • 572
  • 1
  • 6
  • 17
  • 1
    possible duplicate of [Disable future dates in Android date picker](http://stackoverflow.com/questions/6116920/disable-future-dates-in-android-date-picker) – WISHY Apr 21 '15 at 12:15
  • Thanks WISHY, tried a couple of them. I know i'm missing something really simple, but just could not get it to work with other posts. – James Jones Apr 21 '15 at 12:19
  • 1
    You need to set max date to datepicker in oncreatedialog – WISHY Apr 21 '15 at 12:21
  • 1
    Change return new DatePickerDialog(getActivity(), this, year, month, day); to DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); dialog.getDatePicker().setMaxDate(new Date().getTime()); – Raghavendra Apr 21 '15 at 12:24

2 Answers2

6

You need to add only one line in your DatePickerDialog

datePicker.getDatePicker().setMaxDate(calendar.getTimeInMillis());
Anshul Tyagi
  • 2,076
  • 4
  • 34
  • 65
3

I took everyones solution and updated my code. See below. I commented out the old code for everyone to see the difference. Thanks everyone for the help!

public static class DatePickerFragment extends DialogFragment
        implements DatePickerDialog.OnDateSetListener {

    public EditText editText;
    DatePicker dpResult;

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current date as the default date in the picker
        final Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);

        DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day);
        dialog.getDatePicker().setMaxDate(new Date().getTime());

        return  dialog;
        //return new DatePickerDialog(getActivity(), this, year, month, day);
    }

    public void onDateSet(DatePicker view, int year, int month, int day) {

        Intent goSearchSelectedDate = new Intent(getActivity(), Searched_Game_ListView.class);
        Intent goSearchSelectedDate = new Intent(getActivity(), SearchByDate.class);
        goSearchSelectedDate.putExtra("day", String.valueOf(day));
        goSearchSelectedDate.putExtra("month", String.valueOf(month));
        goSearchSelectedDate.putExtra("year", String.valueOf(year));
        Log.d("month", String.valueOf(year));
        startActivity(goSearchSelectedDate);

    }
}

I call it by:

mSearchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DatePickerFragment datePickerFragment = new DatePickerFragment();
            datePickerFragment.show(getSupportFragmentManager(), "datepicker");
        }
    });
James Jones
  • 572
  • 1
  • 6
  • 17