片段没有附加到AlertDialog中的活动

问题描述:

任何想法,为什么我有这个代码块的非法状态异常?片段没有附加到AlertDialog中的活动

mDialog.setButton(AlertDialog.BUTTON_POSITIVE, "OK", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        if (isAdded()) { 
         Intent viewIntent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
         startActivity(viewIntent); 
         dialog.dismiss(); 
        } 
       } 
      }); 

是因为我在启动新活动后解散对话框吗?

+0

更换

dialog.dismiss(); 

您应该粘贴堆栈跟踪添加上的错误的详细信息。 – acrespo

    startActivity(viewIntent); 
        dialog.dismiss(); 

replace with below 
      dialog.dismiss(); 
      startActivity(viewIntent); 

是因为我在开始新活动后解散对话框吗?

答:是的

好活动和对话是different.Activity具有的对话,以便 没有活动的对话将不会有任何的立场(仅限活动作为拥有超过UI不是对话框 控制)。 。当你开始新活动时,所有活动 状态保存活动堆栈,但堆栈不能对话状态,因为 它不是部分活动UI(对话框只能存在活动 上下文)。如果任何活动显示的任何对话框在完成或取消保存到活动堆栈对话框之前必须从UI中删除。

+0

因此,开始一项新活动后真的是对话的解散? – devadnqpnd

+0

不会..你应该先关闭对话框否则开始新的活动 – Sush

+0

实际上,我的意思是,如果在开始导致问题的新活动后,实际上是对话的解散。如果是这样,你能解释为什么吗? – devadnqpnd

只是

 mDialog.dismiss();