我的应用程序中有一个 datePicker 对话框。当我选择日期时效果很好。但是,如果在对话框中更改日期然后按取消,原始编辑文本将保持不变,但日期选择器仍然具有取消之前的日期。我想确保每次进入日期选择器时,它都会设置 EditText 中的日期。我的代码如下。
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) 中的日期进行初始化
提前致谢