0

我的 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 也是可以接受的。

4

1 回答 1

0

我找到了一个可以接受的解决方案。

当我重置日期时,我还应该调用removeDialog(DATE_DIALOG_ID);销毁对话框。下一次showDialog(DATE_DIALOG_ID);被调用,它将被重新创建。

于 2012-11-27T21:45:23.690 回答