我知道這已被問了很多次,但我找不到適合我的問題的答案。TimePickerDialog取消按鈕不丟失數據
所以我有一個活動,其中的文本是當前時間(活動被訪問的時間)。我可以點擊按鈕來顯示一個TimePickerDialog,在那裏我可以改變時間,點擊'設置'按鈕,按鈕更新新的時間。到目前爲止,這麼好,如此基本。
我的問題是,如果我啓動TimePicker,更改時間,單擊取消按鈕,然後再次啓動TimePicker,顯示的時間是我從取消啓動按鈕的原始時間的時間。如果我取消TimePicker,我希望它忘記以前的任何數據。
這裏是我的代碼:
protected Dialog onCreateDialog(int id) {
switch (id) {
case TIME_DIALOG_ID:
recordTime = new TimePickerDialog(this,mTimeSetListener, mHour, mMinute, true);
recordTime.setOnCancelListener(new OnCancelListener(){
@Override
public void onCancel(DialogInterface arg0) {
final Calendar c = Calendar.getInstance();
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
recordTime.dismiss();
}
});
recordTime.setOnDismissListener(new OnDismissListener(){
@Override
public void onDismiss(DialogInterface arg0) {
recordTime.cancel();
recordTime.dismiss();
}
});
return recordTime;
}
return null;
}
// the callback received when the user sets the time in the dialog
private TimePickerDialog.OnTimeSetListener mTimeSetListener =
new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
mHour = hourOfDay;
mMinute = minute;
updateTimeDisplay();
}
};
謝謝。我發現只使用onPrepareDialog就有竅門。自己使用.setOnCancelListener,不會恢復原始時間。 – DaveSav
可以在這裏查看運行代碼https://stackoverflow.com/questions/4724781/timepickerdialog-cancel-button/47043247#47043247 – Deepti