2016-08-25 11 views
0

アクティビティが実行されているかどうかをチェックしても、カスタムダイアログを開くときにRuntimeExceptionが発生します。

これはカスタムのスプラッシュスクリーンで、アプリの起動時にトリガーされます。最初の打ち上げはすべてうまくいくが、アプリがバックグラウンドになって再び開くと、クラッシュが発生する。

android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?                        
at android.view.ViewRootImpl.setView(ViewRootImpl.java:571) 
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:310) 
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85) 
at android.app.Dialog.show(Dialog.java:319) 
at com.mehcode.reactnative.splashscreen.SplashScreen$1.run(SplashScreen.java:23) 

と私のコードは次のようになります:

は私が得る私が行方不明です何の

private static Dialog mSplashDialog; 

/** 
* Show the splash screen. 
*/ 
public static void show(final Activity activity) { 
    activity.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      if (!activity.isFinishing()) { 
       mSplashDialog = new Dialog(activity, R.style.RNSplashScreen_SplashTheme); 
       mSplashDialog.setCancelable(false); 

       if (!mSplashDialog.isShowing()) { 
        mSplashDialog.show(); 
       } 
      } 
     } 
    }); 
} 

任意のアイデア?あなたの助けを事前に

感謝:)

+0

あなたのダイアログでは、あなたのアクティビティのコンテキストを見つけることができない可能性があります。 if(!activity.isFinishing())ではなく 'if(activity!= null)'を試してください。 – SripadRaj

+0

ログのエラーメッセージが表示されます。アクティビティが終了したときにダイアログを表示しようとしています。 – Abbas

+0

なぜ静的ですか?どこからダイアログを開きますか。空のonCreate(バンドルsavedInstanceState){ SplashScreen.show(この保護 'パブリッククラスMainActivityがReactActivity { @Override を拡張 :それは外部のライブラリだと私はそこからそれを呼んでいるので、 – Ramit

答えて

0

許可を追加するには:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 

が反応-ネイティブのための問題を解決しました。

関連する問題