setMinDate(…) for DatePicker doesn't work when invoked a second time

后端 未结 4 1105
终归单人心
终归单人心 2021-01-07 23:41

I\'m in a particular situation in which I have to alter the min and max date of DatePicker according to the selected element of a Spinner. Here\'s

相关标签:
4条回答
  • 2021-01-07 23:42
    mPicker.setMinDate(0);
    

    doesn't work for me.

    Try to reinitialize the picker.

    mPicker = new DatePickerDialog(..)
    
    0 讨论(0)
  • 2021-01-07 23:43

    This happens because method setMinDate() has check

     if (mTempDate.get(Calendar.YEAR) == mMinDate.get(Calendar.YEAR)
                    && mTempDate.get(Calendar.DAY_OF_YEAR) != mMinDate.get(Calendar.DAY_OF_YEAR){
                return;
     }
    

    Simple workaround is to set min date with different year at first, for example

    mPicker.setMinDate(0);
    
    mPicker.setMinDate(new LocalDate().minusWeeks(2)
                                    .toDateTimeAtStartOfDay().getMillis());
    

    It works for me.

    0 讨论(0)
  • 2021-01-07 23:49

    first update setMinDate to 0 after then setMinDate according to you dateobject

    mPicker.setMinDate(0);

    mPicker.setMinDate(datepickerObject.getTimeInMillis());

    0 讨论(0)
  • 2021-01-07 23:57

    As said above, you can bypass the check by calling those before actually changing the value:

    setMinDate(0);
    setMaxDate(Long.MAX_VALUE);
    

    If you want to reset the minimum or maximum value to its default, you can use the following values:

    setMinDate(-2208902400000L);  // Jan 1, 1900
    setMaxDate(4102531200000L);  // Jan 1, 2100
    
    0 讨论(0)
提交回复
热议问题