2016-10-05 49 views
-2

任何想法,爲什麼我有這個代碼塊的非法狀態異常?片段沒有附加到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

回答

1
    startActivity(viewIntent); 
        dialog.dismiss(); 

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

是因爲我在開始新活動後解散對話框嗎?

答:是的

好活動和對話是different.Activity具有的對話,以便 沒有活動的對話將不會有任何的立場(僅限活動作爲擁有超過UI不是對話框 控制)。 。當你開始新活動時,所有活動 狀態保存活動堆棧,但堆棧不能對話狀態,因爲 它不是部分活動UI(對話框只能存在活動 上下文)。如果任何活動顯示的任何對話框在完成或取消保存到活動堆棧對話框之前必須從UI中刪除。

+0

因此,開始一項新活動後真的是對話的解散? – devadnqpnd

+0

不會..你應該先關閉對話框否則開始新的活動 – Sush

+0

實際上,我的意思是,如果在開始導致問題的新活動後,實際上是對話的解散。如果是這樣,你能解釋爲什麼嗎? – devadnqpnd