最佳答案
今天(7月15日) ,我注意到有人已经面临这个问题。但我不确定这是否合适,关闭作为一个副本,因为我认为我提供了一个更好的解释这个问题。我不确定我是否应该编辑另一个问题并把这个内容粘贴到那里,但是我不喜欢太多地改变别人的问题。 —— -
我这里有些 真奇怪的东西。
我不认为问题取决于你是在哪个 SDK 上构建的,重要的是设备操作系统版本。
DatePickerDialog
改变(?)现在只提供了一个 成交按钮。以前的版本包括一个 取消按钮,这可能会影响用户体验(不一致,肌肉记忆从以前的 Android 版本)。
复制: 创建一个基本的项目:
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();
预计: 取消按钮将出现在对话框中。
当前: 没有出现 取消按钮。
对话框调用它确实应该调用的侦听器,然后 一直都是调用 OnDateSetListener
侦听器。取消仍然调用 set 方法,并将其设置为调用该方法两次。
复制: 使用 # 1代码,但在下面添加代码(您将看到这个解决方案 # 1,但仅在视觉上/UI) :
picker.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("Picker", "Cancel!");
}
});
预期:
目前:
显示行为的日志行:
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!
DatePickerFragment
上并不重要。我为你简化了这个问题,但是我已经测试过了。