Из API 11 DatePicker может подтвердить вашу дату для вас.
Следуя руководству , вы ссылаетесь на , при переопределении onCreateDialog получите DatePicker и установите минимальную и максимальную дату:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// no changes from guide ...
final DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day);
dialog.getDatePicker().setMinDate(minDate);
dialog.getDatePicker().setMaxDate(minDate);
return dialog;
}
Таким образом, пользователь не может выбрать неправильную дату, поэтому нет необходимости вручную проверять дату.
Для более старых версий вы можете использовать логическое значение для контроля, когда закрытие разрешено, и реализовать свое собственноелогика.Здесь я попытаюсь проиллюстрировать, где вам нужно расширить свой код:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day){
@Override
public void onBackPressed() {
allowClose = true;
super.onBackPressed();
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (which==DialogInterface.BUTTON_POSITIVE && validate()){
allowClose = true;
}
super.onClick(dialog, which);
}
@Override
public void dismiss() {
if (allowClose) {
super.dismiss();
}
}
};
return dialog;
}
private void onCancelBtnClick() {
allowClose = true;
dismiss();
}