解雇对话的正确方法

时间:2009-12-17 08:41:41

标签: android

我正在尝试使用托管对话框。

我注意到,在我第一次显示它之后,后续创建实际上并没有创建对话框的新实例,它们似乎只是重用了第一个。

如果我想阻止它,并在每次通话时获得一个全新的instance,这是正确的方法吗?:

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
        case MY_DIALOG_ID:
            MyDlg dlg = new MyDlg(this);
            dlg.setOnDismissListener(new OnDismissListener() {
                public void onDismiss(DialogInterface dialog) {
                    removeDialog(MY_DIALOG_ID);
                }
            });
            return dlg;
    }
    return null;
}

所以我想removeDialog()调用可以解决这个问题,但是我的onDismiss()处理程序应该在被杀死的对话框的每个实例中都被调用,正确(就像Dialog.cancel(), Dialog.dismiss(),点击后退键一样) ?

1 个答案:

答案 0 :(得分:3)

正如您所注意到的,onCreateDialog()方法仅在您第一次显示对话框时被调用。它负责构建对话框。事实上,每次要显示对话框时,您都不必“破坏”对话框以强制调用onCreateDialog。您可以覆盖onPrepareDialog(int,Dialog) - 在显示对话框之前调用此对象。 (它可以回收在之前的onCreateDialog调用中构建的对话框)“如果要在每次打开时更改对话框的任何属性,请定义此方法。”
此致!