webview - How to resolve : android.view.WindowManager$BadTokenException - is your activity running? -


i have activity lot of dialogs ex dialog_1, dialog_2, dialog_3, have implemented webview in 1 of dialogs lets dialog_2. when navigate through dialog's, first time dialog_2 webview opens no problem, second time when navigate dialog_3 , come dialog_2 or dialog_1 dialog_2 , touch webview error mentioned bellow.

i have looked @ bad token exception not work still using

     if (! this.isfinishing()) {         showdialog(dialog_add_a_person_body_map)     } 

fatal exception: main android.view.windowmanager$badtokenexception: unable add window -- token android.view.viewrootimpl$w@41ec0fc8 not valid; activity running?

fatal exception: main android.view.windowmanager$badtokenexception: unable add window -- token android.view.viewrootimpl$w@41ec0fc8 not valid; activity running?         @ android.view.viewrootimpl.setview(viewrootimpl.java:806)         @ android.view.windowmanagerglobal.addview(windowmanagerglobal.java:265)         @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:73)         @ android.widget.zoombuttonscontroller.setvisible(zoombuttonscontroller.java:373)         @ android.webkit.zoomcontrolembedded.show(zoomcontrolembedded.java:41)         @ android.webkit.zoommanager.invokezoompicker(zoommanager.java:1728)         @ android.webkit.webviewclassic.startdrag(webviewclassic.java:11645)         @ android.webkit.webviewclassic.handletoucheventcommon(webviewclassic.java:11170)         @ android.webkit.webviewclassic.onhandleuitouchevent(webviewclassic.java:3225)         @ android.webkit.webviewclassic.onhandleuievent(webviewclassic.java:3135)         @ android.webkit.webviewclassic.access$12000(webviewclassic.java:278)         @ android.webkit.webviewclassic$privatehandler.dispatchuievent(webviewclassic.java:13405)         @ android.webkit.webviewinputdispatcher.dispatchuievent(webviewinputdispatcher.java:1078)         @ android.webkit.webviewinputdispatcher.dispatchuievents(webviewinputdispatcher.java:1066)         @ android.webkit.webviewinputdispatcher.access$300(webviewinputdispatcher.java:78)         @ android.webkit.webviewinputdispatcher$uihandler.handlemessage(webviewinputdispatcher.java:1392)         @ android.os.handler.dispatchmessage(handler.java:99)         @ android.os.looper.loop(looper.java:176)         @ android.app.activitythread.main(activitythread.java:5365)         @ java.lang.reflect.method.invokenative(native method)         @ java.lang.reflect.method.invoke(method.java:511)         @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1102)         @ com.android.internal.os.zygoteinit.main(zygoteinit.java:869)         @ dalvik.system.nativestart.main(native method) 

the dialog code is

case dialog_add_a_person_body_map:                 try {                     layoutinflater inflaterbodymap =                             .getlayoutinflater();                     final view inflatorbodymap = inflaterbodymap                             .inflate(                                     r.layout.dialog_incident_window_body_map,                                     null);                     bodymapwebview  = (webview) inflatorbodymap.findviewbyid(r.id.webview);                     bodymapwebview.getsettings().setjavascriptenabled(true);                     //bodymapwebview.getsettings().setrenderpriority(websettings.renderpriority.high);                     //bodymapwebview.getsettings().setcachemode(websettings.load_no_cache);                     bodymapwebview.getsettings().setbuiltinzoomcontrols(true);                     bodymapwebview.getsettings().setsupportzoom(true);                      bodymapwebview.loadurl("https://www.google.co.uk");                      bodymapwebview.addjavascriptinterface(new webappinterface(this), "android");                                         builder.settitle("injured person");                     builder.setview(inflatorbodymap);                      builder.setpositivebutton("next",                             new dialoginterface.onclicklistener() {                                  @override                                 public void onclick(dialoginterface dialog,                                                     int which) {                                     showdialog(dialog_add_a_person_was_the_person_injured_et);                                     wasthepersoninjured.settext(map_incident_addaperson.get("injurednotes"));                                   }                             });                     builder.setnegativebutton("back",                             new dialoginterface.onclicklistener() {                                  @override                                 public void onclick(dialoginterface dialog,                                                     int which) {                                       showdialog(dialog_add_a_person_was_the_person_injured);                                  }                             });                     return builder.create();                 } catch (exception e) {                     e.printstacktrace();                 } 

how resolve error. , suggestions appreciated.

this happens if activity has been killed due reason , window token of activity has expired try , access anyways. solve put in onpause:

 @override  protected void onpause() {      super.onpause();       if ((progress != null) && progress.isshowing()) {         progress.dismiss();      }      progress = null;  } 

Comments