我的Activity上有一个TextView,用于显示日期。当用户点击TextView时,我会像这样启动一个DatePickerDialog:
public void onClick(View v) {
if (v.getId() == R.id.date_wrapper) {
showDialog(DATE_DIALOG_ID);
}
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
GregorianCalendar date = new GregorianCalendar();
if (mData != null) {
date.setTimeInMillis(mData.getDate());
}
return new DatePickerDialog(this, datePickerListener, date.get(Calendar.YEAR), date.get(Calendar.MONTH), date.get(Calendar.DAY_OF_MONTH));
}
return null;
}
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) {
GregorianCalendar selectedDate = new GregorianCalendar();
selectedDate.set(Calendar.YEAR, selectedYear);
selectedDate.set(Calendar.MONTH, selectedMonth);
selectedDate.set(Calendar.DAY_OF_MONTH, selectedDay);
mData.setDate(selectedDate.getTimeInMillis());
populateDate();
}
};
这很有效。但是,当用户点击提交按钮时,我想将日期设置回今天。我可以轻松地将mData对象的Date变量设置为今天。但是,我不知道如何更新DatePickerDialog。它已经创建,因此单击TextView不会再次运行onCreateDialog。因此,当我单击TextView时,DatePickerDialog会打开,这是我选择的最后一个日期。
如何引用DatePickerDialog来更新日期?杀死DatePickerDialog也是可以接受的。
答案 0 :(得分:0)
我找到了一个可以接受的解决方案。
当我重置日期时,我还应该调用removeDialog(DATE_DIALOG_ID);
来销毁对话框。下次调用showDialog(DATE_DIALOG_ID);
时,将重新创建它。