我使用以下代码来显示一个TimePickerDialog
TimePickerDialog dialog = new TimePickerDialog(this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
System.out.println("onTimeSet");
}
}, 20, 15, true);
dialog.setTitle("Test");
dialog.setButton(TimePickerDialog.BUTTON_POSITIVE, "Done", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.out.println("Done");
}
});
dialog.setButton(TimePickerDialog.BUTTON_NEGATIVE, "Cancel", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
System.out.println("Cancel");
}
});
dialog.show();在运行Android2.3.7的设备上,onTimeSet方法不会被调用( onClick方法会)。在运行4.2.2的设备上,onTimeSet的调用方式应该是正确的。
这是怎么回事?
发布于 2013-03-04 01:05:54
在Android4.1.1之后,TimePickerDialog发生了变化,TimePickerDialog和DatePickerDialog的取消都有一个bug。请先阅读here。默认情况下,您不需要设置正负按钮。TimePickerDialog和DatePickerDialog会为您处理这些问题。所以如果这个取消问题对你来说并不重要,请删除正负按钮的设置。如果在两个版本中都将其删除,如果用户单击OK按钮,则将调用您onTimeSet方法。
但我建议在这个bug被修复之前,使用带有TimePicker部件的定制AlertDialog;
final TimePicker timePicker = new TimePicker(this);
timePicker.setIs24HourView(true);
timePicker.setCurrentHour(20);
timePicker.setCurrentMinute(15);
new AlertDialog.Builder(this)
.setTitle("Test")
.setPositiveButton(android.R.string.ok, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.d("Picker", timePicker.getCurrentHour() + ":"
+ timePicker.getCurrentMinute());
}
})
.setNegativeButton(android.R.string.cancel,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
Log.d("Picker", "Cancelled!");
}
}).setView(timePicker).show();https://stackoverflow.com/questions/15165328
复制相似问题