android.view.WindowManager $ BadTokenException:

时间:2017-08-07 09:23:16

标签: android android-dialog android-windowmanager

我在显示自定义对话框时有时会收到错误。我无法追踪,为什么这个错误有时只会出现。任何人都知道这个例外何时发生。任何可能的情况?

BadTokenException详细信息:

android.view.WindowManager$BadTokenException: 
  at android.view.ViewRootImpl.setView (ViewRootImpl.java:673)
  at android.view.WindowManagerGlobal.addView (WindowManagerGlobal.java:301)
  at android.view.WindowManagerImpl.addView (WindowManagerImpl.java:85)
  at android.app.Dialog.show (Dialog.java:337)
  at com.mydomain.myappname.helpers.dialogs.ApiProgressDialog.show (ApiProgressDialog.java:24)
  at com.mydomain.myappname.ui.activity.SplashActivity.loadUserStatusApi (SplashActivity.java:182)
  at com.mydomain.myappname.ui.activity.SplashActivity.checkIntentForMainActivity (SplashActivity.java:171)
  at com.mydomain.myappname.ui.activity.SplashActivity.access$000 (SplashActivity.java:47)
  at com.mydomain.myappname.ui.activity.SplashActivity$2.run (SplashActivity.java:143)
  at android.os.Handler.handleCallback (Handler.java:739)
  at android.os.Handler.dispatchMessage (Handler.java:95)
  at android.os.Looper.loop (Looper.java:160)
  at android.app.ActivityThread.main (ActivityThread.java:5541)
  at java.lang.reflect.Method.invoke (Native Method)
  at java.lang.reflect.Method.invoke (Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:964)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:759)

代码初始化:

我在SplashActivity.Class中调用了CustomDialog类

Context context= SplashActivity.this;
ApiProgressDialog apiProgressDialog= new ApiProgressDialog(context);

apiProgressDialog.show();//  here BadTokenException error returns on something

1 个答案:

答案 0 :(得分:-1)

我在后台线程中添加进度条然后这个

android.view.WindowManager$BadTokenException

发生异常。如果您使用asynkTask课程进行某些后台工作,则无法在progressDialog方法中使用AleartDialogpostexecute

如果您想要执行此类操作,可以使用AsynkLoader类覆盖loadInbackground方法,在该方法中您可以执行后台工作,然后在主活动中实施LoaderManager.LoaderCallBacks onLoadfinish()中的main thread因此您可以使用dialogboxProgressBar