【问题标题】:android.view.WindowManager$BadTokenException:android.view.WindowManager$BadTokenException:
【发布时间】:2017-08-07 09:23:16
【问题描述】:

显示自定义对话框时有时会出现错误。我无法追踪,为什么这个错误有时只会出现。请任何人知道此异常何时发生。有什么可能的情况吗?

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

【问题讨论】:

标签: android android-dialog android-windowmanager


【解决方案1】:

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

android.view.WindowManager$BadTokenException

出现异常。如果您使用asynkTask 类进行一些后台工作,则不能在postexecute 方法中使用progressDialogAleartDialog

如果你想做这样的事情,你可以使用 AsynkLoader 类覆盖 loadInbackground 方法,你可以在其中执行后台工作,然后在你的主要活动中实现 LoaderManager.LoaderCallBacks 这将覆盖 onLoadfinish() 这将是在main thread 所以你可以使用dialogboxProgressBar

【讨论】:

    猜你喜欢
    • 2016-11-26
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多