2011-11-18 99 views
0

我正在使用android dateslider自定義對話框類,以便讓用戶編輯表的多個不同行的日期。Android:強制重新創建對話框

dateslider讓您限制用戶只能選擇您可以指定的最短日期和最長日期之間的日期。

每個表格行都要求dateslider將用戶限制到不同的最小日期和最大日期,但是因爲您在onCreateDialog方法中指定了最小和最大日期,所以我需要能夠在用戶動態修改這些日期時點擊該行。

我已經嘗試再次調用onCreateDialog方法,當用戶單擊對話框,並且它已運行,但是新的限制沒有考慮到,這表明最初創建的對話框仍然使用。

我該如何去實現我的目標?

謝謝, 最大。

回答

1

如果您在使用它們之前需要更改對話框,則需要使用onPrepareDialog

更新:

被傳遞給onPrepareDialog的對話是在onCreateDialog創建對話框。修改它,但是你喜歡(不要創建一個新的)。您可能需要添加一些setter到您的自定義對話框類:

protected void onPrepareDialog(int id, Dialog dialog) { 
    switch(id) { 
    case YOUR_DIALOG_ID: 
     YearMonthDayHourMinute myDialog = (YearMonthDayHourMinute) dialog; 
     myDialog.setInitialTime(initialTime); 
     myDialog.setMinTime(minTime); 
     myDialog.setMaxTime(maxTime); 
     break; 
    } 
} 
+0

謝謝,剛剛發現該方法。這裏是我的代碼:保護無效onPrepareDialog(INT ID,對話框對話框){ \t \t dialog = new YearMonthDayHourMinute(this,mDateSetListener,initialTime,minTime,maxTime);但是,這只是編輯變量的本地副本。我將如何訪問對話框本身? \t} –

+0

非常感謝您的更新!新的oop,你可以看到,所以仍然有心態:P乾杯! –

+0

更簡單的解決方案是調用removeDialog(DIALOG_ID);然後showDialog(DIALOG_ID); - 編輯對話框控件的源代碼目前對我而言過於複雜,但您的回答仍然非常相關。謝謝 –