2016-08-17 11 views
0

我在Activity下面的代碼顯示警告Dialog如果出現錯誤:BadTokenException即使我檢查活動isFinishing()

private void showConfigError() { 
     if (!isFinishing()) { 
      new AlertDialog.Builder(this) 
        .setMessage(R.string.start_failed) 
        .setCancelable(false) 
        .setPositiveButton(*/.../*) 
        .setNegativeButton(*/.../*) 
        .create() 
        .show(); 
     } 
    } 

正如你所看到的,我檢查Activity仍運行之前,我會顯示Dialog。但是,儘管如此,我的故障記錄顯示有時會在該程序的這一部分中發生BadTokenException。現在我在問自己這是怎麼發生的?!有沒有Activity可以返回isFinishing() == false但不再活動的狀態?

回答

0

試試這個代碼

private void showConfigError() { 
    if (isFinishing()) return; 

    new AlertDialog.Builder(this) 
       .setMessage(R.string.start_failed) 
       .setCancelable(true)  // let system kills it. 
       .setPositiveButton(*/.../*) 
       .setNegativeButton(*/.../*) 
       .create() 
       .show(); 

    } 
如果你發現它有用接受答案
+0

? – Don

+0

是什麼什麼都不做,只是「迴歸」的區別 – JensJensen

+0

這些是在isFinishing()檢查和系統嘗試解除對話框但您將其設置爲setCancelable(false)之後可能會被殺死的機會 – Don

相關問題