Android Ошибка DatePicker на maxDate - PullRequest
1 голос
/ 13 июля 2020

Я создал DatePickerDialog, и я пытаюсь ограничить средство выбора до максимальной даты «сегодня» (в настоящее время: 2020, 13 июля), например:

DatePickerDialog(
    activity,
    OnDateSetListener { _: DatePicker?, year: Int, monthOfYear: Int, dayOfMonth: Int ->
        selectedBirthday.set(year, monthOfYear, dayOfMonth)
    },
    1980, 7, 2
).apply {
    datePicker.maxDate = System.currentTimeMillis() // max date = today
}.show()

Диалоговое окно открывается правильно с данными по умолчанию («1980, 02 августа»).

Однако я обнаружил ошибку, когда выбрано «1980, 02 августа» и я меняю год до 2020: в диалоговом окне вверху отображается «2020, 02 августа» игнорируя maxDate настройку лимита в datePicker , но календарь ниже правильно ограничено до 13 июля.

Скриншот: Android DatePickerDialog игнорирует maxDate

Если я нажму кнопку «ОК», год, monthOfYear и dayOfMonth, возвращенные моим DateSetListener, будут 2020, август 02 , что является датой в будущем из того, что хотел. Есть ли способ избежать этой ошибки в DatePickerDialog с игнорированием maxDate?

1 Ответ

1 голос
/ 13 июля 2020

Попробуйте Date().getTime() вместо System.currentTimeMillis()

DatePickerDialog(
    activity,
    OnDateSetListener { _: DatePicker?, year: Int, monthOfYear: Int, dayOfMonth: Int ->
        selectedBirthday.set(year, monthOfYear, dayOfMonth)
    },
    1980, 7, 2
).apply {
    datePicker.maxDate = Date().getTime() // max date = today
}.show()
...