如何从onDestroy

时间:2016-06-27 15:41:14

标签: android dialog alertdialog

我的代码当前创建的对话框可能需要在旋转设备时被解除。因此,对于某些对话框,我有一个全局声明,然后编码如下:

Builder dialog = new AlertDialog.Builder(context);
        alertDialog = dialog.create();
        alertDialog.setMessage("Some Heading");
        alertDialog.setButton(alertDialog.BUTTON_POSITIVE, "Some Message", dialogClickListener);
        alertDialog.setButton(alertDialog.BUTTON_NEGATIVE, "Another Message", dialogClickListener);

        alertDialog.show();

在onDestroy中,我可以检查对话框是否可见并在发生这种情况时将其销毁:

if ((alertDialog !=null) && (alertDialog.isShowing()))
{
    alertDialog.dismiss();
}

以上内容适用于基本的基于文​​本和按钮的对话框,但是我也有对话框可以处理多项选择,例如复选框和单选按钮。

这些是当前的设置:

AlertDialog.Builder dialogMultipleChoice = new AlertDialog.Builder(this);

dialogMultipleChoice.setMultiChoiceItems(myList, myCheckedList, new DialogInterface.OnMultiChoiceClickListener(){
@Override
public void onClick(DialogInterface dialog,int which, boolean isChecked) {
    checkedList[which] = isChecked;
     }}
);

......等等..

使用多选对话框,我无法看到如何在onDestroy中忽略它,即我无法调用dialogMultipleChoice.dismiss()。

注意,我不能使用dialog.create,如果我这样做,我将无法调用setMultiChoiceItems。

非常感谢您解决此问题的任何帮助。

2 个答案:

答案 0 :(得分:0)

在第一个示例中,您将创建构建器,然后将builder.create();的值分配给您的成员变量:

Builder dialog = new AlertDialog.Builder(context);
alertDialog = dialog.create();

但在第二个例子中,您只是创建一个局部变量:

AlertDialog.Builder dialogMultipleChoice = new AlertDialog.Builder(this);

您需要调用alertDialog = dialog.create();将此对话框指定给成员变量,然后您可以像其他对话框一样将其关闭

答案 1 :(得分:0)

最后我使用了.show()调用对话框的返回值,即dialog = dialogMultipleChoice.show();