Я знаю, что это спрашивали много раз, но я не могу найти ответ, подходящий для моей проблемы.
Итак, у меня есть действие, в котором есть кнопка, где ее текст - это текущее время (время доступа к действию). Я могу нажать кнопку, чтобы отобразить 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();
}
};