我正在尝试使用托管对话框。
我注意到,在我第一次显示它之后,后续创建实际上并没有创建对话框的新实例,它们似乎只是重用了第一个。
如果我想阻止它,并在每次通话时获得一个全新的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(),
点击后退键一样) ?
答案 0 :(得分:3)
正如您所注意到的,onCreateDialog()方法仅在您第一次显示对话框时被调用。它负责构建对话框。事实上,每次要显示对话框时,您都不必“破坏”对话框以强制调用onCreateDialog。您可以覆盖onPrepareDialog(int,Dialog) - 在显示对话框之前调用此对象。 (它可以回收在之前的onCreateDialog调用中构建的对话框)“如果要在每次打开时更改对话框的任何属性,请定义此方法。”
此致!