我的代码当前创建的对话框可能需要在旋转设备时被解除。因此,对于某些对话框,我有一个全局声明,然后编码如下:
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。
非常感谢您解决此问题的任何帮助。
答案 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();