Jelly Bean DatePickerDialog - есть ли способ отменить?
--- Note to moderators: Today (July 15), I've noticed that someone already faced this problem Вот, Но я не уверен, что уместно закрыть это как дубликат, так как я думаю, что предоставил гораздо лучшее объяснение проблемы. Я не уверен, стоит ли мне редактировать другой вопрос и вставлять туда этот контент, но мне неудобно слишком сильно менять чужой вопрос. ---
у меня кое-что естьweird Вот.
Я не думаю, что проблема зависит от того, против какого SDK вы создаете. Версия ОС устройства имеет значение.
Problem #1: inconsistency by defaultDatePickerDialog
был изменен (?) в Jelly Bean и теперь предоставляет толькоDone кнопка. Предыдущие версии включалиCancel кнопка, и это может повлиять на пользовательский опыт (несоответствие, мышечная память из предыдущих версий Android).
Replicate: Создать базовый проект. Поместите это вonCreate
:
DatePickerDialog picker = new DatePickerDialog(
this,
new OnDateSetListener() {
@Override
public void onDateSet(DatePicker v, int y, int m, int d) {
Log.d("Picker", "Set!");
}
},
2012, 6, 15);
picker.show();
Expected: Cancel кнопка, чтобы появиться в диалоге.
Current: Cancel Кнопка не появляется.
Screenshots: 4.0.3 (Хорошо и4.1.1 (возможно, неправильно?).
Problem #2: wrong dismiss behaviorДиалог вызывает того слушателя, которому он действительно должен позвонить, а затемalways звонкиOnDateSetListener
слушатель. Отмена по-прежнему вызывает метод set, а установка его вызывает метод дважды.
Replicate: Используйте код № 1, но добавьте код ниже (вы увидите, что это решает № 1, но только визуально / пользовательский интерфейс):
picker.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("Picker", "Cancel!");
}
});
Expected:
Pressing the BACK key or clicking outside the dialog should do nothing. Pressing "Cancel" should print Picker Cancel!. Pressing "Set" should print Picker Set!.Current:
Pressing the BACK key or clicking outside the dialog prints Picker Set!. Pressing "Cancel" prints Picker Cancel! and then Picker Set!. Pressing "Set" prints Picker Set! and then Picker Set!.Строки журнала, показывающие поведение:
07-15 12:00:13.415: D/Picker(21000): Set!
07-15 12:00:24.860: D/Picker(21000): Cancel!
07-15 12:00:24.876: D/Picker(21000): Set!
07-15 12:00:33.696: D/Picker(21000): Set!
07-15 12:00:33.719: D/Picker(21000): Set!
Other notes and comments
Wrapping it around a DatePickerFragment
doesn't matter. I simplified the problem for you, but I've tested it.