2016-08-17 8 views
0

Iエラーが発生した場合、私のActivityに次のコードが警告Dialogを表示する必要があります:あなたが見ることができるようActivityがまだある場合BadTokenException私がチェックした場合でももし活動isFinishing()

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

が、私は確認してください私がDialogを表示する前に、実行中です。しかし、それでも私のcrashlogは、プログラムのこの部分でBadTokenExceptionが起こることを示しています。今、私はこのことがどうなるか自分に尋ねていますか? ActivityisFinishing() == 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

関連する問題