Слушатель для кнопки DatePickerDialog +/-
Я сейчас пользуюсь DatePickerDialog
в моем приложении для Android.
Как всем известно, в диалоге есть три EditText
s: 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
андроида для соты и выше.