2011-11-18 85 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); - 编辑对话框控件的源代码目前对我而言过于复杂,但您的回答仍然非常相关。谢谢 –