1

I got the error on sometimes when showing the custom dialog. I can't trace, Why this error came on sometimes only. Please anyone have idea when this exception happened. Any possible scenario?

BadTokenException Detail:

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)

Code Initialization:

I called CustomDialog class in my SplashActivity.Class

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

apiProgressDialog.show();//  here BadTokenException error returns on something
Venkatesh Selvam
  • 1,302
  • 1
  • 13
  • 27
  • 1
    Read https://stackoverflow.com/questions/18662239/android-view-windowmanagerbadtokenexception-unable-to-add-window-on-buider-s – IntelliJ Amiya Aug 07 '17 at 09:24

1 Answers1

-1

I you are adding progress bar in background thread then this

android.view.WindowManager$BadTokenException

exception occurs. If you are using asynkTask class for some background work than you can't use progressDialog or AleartDialog in postexecute method.

If you want to do something like this you can use AsynkLoader class which overrides loadInbackground method in which you can perform background work and then implement LoaderManager.LoaderCallBacks in your main activity which will override onLoadfinish() that will be in main thread so for that you can use dialogbox or ProgressBar

Mohit Yadav
  • 433
  • 8
  • 16