これが何度も尋ねられていることは知っていますが、私の問題に合った答えが見つかりません。
だから私は、そのテキストが現在の時間(アクティビティがアクセスされた時間)であるボタンを持つアクティビティを持っています。ボタンをクリックして時間を変更できる 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();
}
};