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
Post a Comment