Слушатель для кнопки DatePickerDialog +/-

Я сейчас пользуюсь DatePickerDialog в моем приложении для Android.

Как всем известно, в диалоге есть три EditTexts: 1) для дня 2) для месяца 3) для года. И есть кнопки + и - для трех, чтобы переместиться вперед и назад выбранного поля. Мне нужно знать, существует ли какой-либо слушатель для кнопок "+" и "-" в диалоговом окне?

Это потому, что в моем приложении я не хочу, чтобы пользователь выбирал предыдущие даты перед текущей датой, используя диалоговое окно. Поэтому, если нажата кнопка "-", она должна проверить, меньше ли текущая дата в диалоговом окне. Поэтому мне нужен слушатель для кнопки "-" в диалоге.

Также я разрабатываю это приложение для всех платформ, начиная от Froyo до KitKat. Я слышал, что есть setMinDate() за DatePicker, Но это доступно только от HoneyComb.

2 ответа

Решение

Попробуйте переопределить onDateChnaged() функция, вот пример:

DatePickerDialog mDatePickerDialog = new DatePickerDialog(this, mDateSetListener,mYear, mMonth, mDay){
                @Override
                public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth){
                    // this function will call when user click on '+' or '-'. Apply validation here. you can call view.updateDate(mYear, mMonth, mDay); if u don't want to accept date that user trying to select by pressing +/- 
                    final Calendar c = Calendar.getInstance();
                    mYear = c.get(Calendar.YEAR);
                    mMonth = c.get(Calendar.MONTH);
                    mDay = c.get(Calendar.DAY_OF_MONTH);
                    /* this validation allow user to enter date less then current date */
                    if (year > mYear)
                        view.updateDate(mYear, mMonth, mDay);

                if (monthOfYear > mMonth && year == mYear)
                    view.updateDate(mYear, mMonth, mDay);

                if (dayOfMonth > mDay && year == mYear && monthOfYear == mMonth)
                    view.updateDate(mYear, mMonth, mDay);
            }
        };

DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener () {public void onDateSet (представление DatePicker, int year, int monthOfYear,int dayOfMonth) { // Добавить свой код здесь для обработки выбранного события даты пользователем

} };

Вы действительно не можете реализовать setMinDate для API под honeyComb, но вы все равно можете использовать бэкпорт datePickerDialog это дизайн, чтобы иметь setMinDate функциональность метода только внутри него, который будет работать от froyo и выше вы можете проверить этот проект GitHub.

Используйте этот проект как DatePicker диалог для Froyo до HoneyComb, и использовать обычный по умолчанию DatePicker андроида для соты и выше.

Другие вопросы по тегам