Возможность выбора сверх максимальной даты при навигации по годам в DatePicker (Android) - PullRequest
0 голосов
/ 25 октября 2019

Я могу выбрать дату сверх МАКСИМАЛЬНОЙ даты, когда я перемещаюсь по Году.

Требование: я должен разрешить пользователю выбирать сегодняшнюю дату плюс 365 дней в средстве выбора даты. Поэтому минимальная дата = сегодня, максимальная дата = сегодня плюс 364

Проблема: возможность выбора сверх максимальной даты при навигации по году

Шаги для воспроизведения проблемы:

  1. Выбрана сегодняшняя дата (например, 25 октября 2019 года)
  2. Выберите дату, которая составляет 5 дней с сегодняшнего дня (например, 30 октября 2019 года)
  3. Выберите год и перейдите к следующему году(например: 2020)
  4. Вы увидите, что выбрано 24 октября 2020 года, так как это была наша МАКСИМАЛЬНАЯ дата
  5. Но когда вы нажмете ОК, выбранный onDate даст вам дату, превышающую максимумдата (например, 30 октября 2020 года)
private void showDatePicker(Calendar selectedDate) {
        datePickerDialog = new DatePickerDialog(MainActivity.this,
                new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int month, int day) {
                        MainActivity.this.onDateSet(year, month, day);
                    }
                },
                selectedDate.get(YEAR),
                selectedDate.get(MONTH),
                selectedDate.get(DAY_OF_MONTH));
        Calendar today = Calendar.getInstance();
        datePickerDialog.getDatePicker().setMinDate(today.getTimeInMillis() - 1000);
        today.add(DATE, 365);
        datePickerDialog.getDatePicker().setMaxDate(today.getTimeInMillis());

        datePickerDialog.setButton(BUTTON_NEGATIVE, "ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                datePickerDialog.dismiss();
            }
        });
        datePickerDialog.show();
    }

    public void onDateSet(int year, int month, int day) {
        String date = String.valueOf(year).concat("-").concat(String.valueOf(month).concat("-").concat(String.valueOf(day)));
        btnDate.setText(date);
    }

enter image description here enter image description here enter image description here enter image description here enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...