在使用时间选择器时,可以使用以下代码来解决按下取消时时间选择器不关闭的问题:
TimePickerDialog timePickerDialog = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
// 处理时间选择后的逻辑
}
}, hour, minute, true);
timePickerDialog.setCanceledOnTouchOutside(false); // 设置点击空白处不关闭
timePickerDialog.setCancelable(true); // 设置可取消
timePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss(); // 关闭时间选择器
}
});
timePickerDialog.show();
通过设置 setCanceledOnTouchOutside(false) 和 setCancelable(true) 来允许用户通过按下取消或点击空白处关闭时间选择器。然后,通过 setButton() 方法设置取消按钮的逻辑,当用户按下取消按钮时会通过 dismiss() 方法关闭时间选择器。