我在我的應用程序中有一個datePicker對話框。當我選擇日期時它工作正常。但是,如果在對話框中我更改日期,然後按取消,原始編輯文本保持不變,但日期選擇器仍然具有取消前的日期。我想確保每次進入Date Picker時,它都會從EditText設置日期。我的代碼如下。如何在選擇取消按鈕時重置DatePicker
onCreate()方法
// Date Listener
fdEtDate.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
showDialog(DATE_DIALOG_ID);
return false;
}
});
再往下活動
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
return new DatePickerDialog(this,
dateSetListener,
cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE));
case STD_DIALOG_ID:
return new TimePickerDialog(this,
stdSetListener,
stdHH, stdMM,
true);
case STA_DIALOG_ID:
return new TimePickerDialog(this,
staSetListener,
staHH, staMM,
true);
}
return null;
}
// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener dateSetListener =
new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, monthOfYear);
cal.set(Calendar.DATE, dayOfMonth);
updateDisplay();
}
};
// updates the date in the TextView
private void updateDisplay() {
fdEtDate.setText(
new StringBuilder()
.append(Utils.pad(cal.get(Calendar.DATE))).append(Const.SQL_DATE_SEP)
.append(Utils.pad(cal.get(Calendar.MONTH)+1)).append(Const.SQL_DATE_SEP)
.append(cal.get(Calendar.YEAR)));
fdEtStd.setText(
new StringBuilder()
.append(Utils.pad(stdHH)).append(Const.SQL_TIME_SEP)
.append(Utils.pad(stdMM)));
fdEtSta.setText(
new StringBuilder()
.append(Utils.pad(staHH)).append(Const.SQL_TIME_SEP)
.append(Utils.pad(staMM)));
}
似乎是創建一個新的對話框每一次,爲什麼是不是每次初始化與fdEtDate日期(EditText上)
在此先感謝
輝煌,這正是我想要的,你是明星。第一次工作。非常感謝非常及時的答覆。 – PeterB
歡迎:) – Chiara
是的,謝謝這工作正常,但是當我編輯我的數據在那個時候datepicker打開當前日期insted從我保存的數據。所以在編輯時我怎樣才能得到datepicker對話框中最後添加的日期? – 2012-09-10 06:45:41