2016-08-25 58 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!= null)'而不是'if(!activity.isFinishing())'。 – SripadRaj

+0

日志错误消息告诉你一切。您正试图在活动死亡或不活动时显示对话框。 – Abbas

+0

为什么是静态的?从你想要打开对话的地方开始。 – Ramit

回答

0

添加权限:

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

解决的阵营原生的问题。

相关问题