【问题标题】:Android: Force recreation of dialogAndroid:强制重新创建对话框
【发布时间】:2011-11-18 18:42:02
【问题描述】:

我正在使用 android dateslider 自定义对话框类,以便让用户编辑表格中多个不同行的日期。

日期滑块可让您限制用户仅选择介于您可以指定的最小日期和最大日期之间的日期。

每个表格行都需要日期滑块将用户限制为不同的最小日期和最大日期,但是因为您在 onCreateDialog 方法中指定了最小和最大日期,所以我需要能够在用户单击时动态修改这些日期行。

我尝试在用户点击对话框时再次调用onCreateDialog方法,并运行,但是没有考虑新的限制,提示仍然使用最初创建的对话框。

我将如何实现我的目标?

谢谢, 最大。

【问题讨论】:

    标签: android dialog recreate


    【解决方案1】:

    如果您需要在使用之前更改对话框,则需要使用onPrepareDialog

    更新:

    传入onPrepareDialog 的对话框是在onCreateDialog 中创建的对话框。随意修改它(不要创建新的)。您可能需要在自定义对话框类中添加一些设置器:

    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;
        }
    }
    

    【讨论】:

    • 谢谢,刚刚找到那个方法。这是我的代码: protected void onPrepareDialog (int id, Dialog dialog){ dialog = new YearMonthDayHourMinute(this, mDateSetListener, initialTime, minTime, maxTime);然而,这只是编辑变量的本地副本。我将如何访问对话框本身? }
    • 太好了,感谢您的更新!如您所见,新接触 oop 仍然保持心态:P 干杯!
    • 更简单的解决方案是调用 removeDialog(DIALOG_ID);然后 showDialog(DIALOG_ID); - 编辑对话框控件的源目前对我来说有点太复杂了,但你的回答仍然非常相关。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2018-10-12
    • 2011-06-21
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多