2012-11-27 118 views
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也是可以接受的。

+0

爲什麼每次用戶點擊文本視圖時都不運行新的數據挖掘對話實例?通過這種方式,createDialog總是被調用,對吧? – kinghomer

+0

如何?我只是簡單地調用showDialog(MY_ID);'這是一個系統方法 – Andrew

+0

你可以發佈活動代碼嗎?所以我可以看到你在哪裏以及如何在每個部分調用對話框 – kinghomer

回答

0

我找到了一個可以接受的解決方案。

當我重置日期時,我還應該調用removeDialog(DATE_DIALOG_ID);銷燬對話框。下次調用showDialog(DATE_DIALOG_ID);時,它將被重新創建。