Popup window in android WebView -
i using webview
open link in app. link works fine in webview
when clicked on item of webview(link opened) open popup app got crashed. , gives me error .
03-24 16:40:10.680: w/system.err(5798): android.view.windowmanager$badtokenexception: unable add window -- token android.app.localactivitymanager$localactivityrecord@421e0760 not valid; activity running? 03-24 16:40:10.680: w/system.err(5798): @ android.view.viewrootimpl.setview(viewrootimpl.java:536) 03-24 16:40:10.680: w/system.err(5798): @ android.view.windowmanagerglobal.addview(windowmanagerglobal.java:259) 03-24 16:40:10.680: w/system.err(5798): @ android.view.windowmanagerimpl.addview(windowmanagerimpl.java:69) 03-24 16:40:10.680: w/system.err(5798): @ android.app.dialog.show(dialog.java:286) 03-24 16:40:10.690: w/system.err(5798): @ com.android.org.chromium.content.browser.input.selectpopupdialog.show(selectpopupdialog.java:217) 03-24 16:40:10.690: w/system.err(5798): @ com.android.org.chromium.content.browser.contentviewcore.showselectpopup(contentviewcore.java:2413) 03-24 16:40:10.690: w/system.err(5798): @ com.android.org.chromium.base.systemmessagehandler.nativedorunlooponce(native method) 03-24 16:40:10.690: w/system.err(5798): @ com.android.org.chromium.base.systemmessagehandler.handlemessage(systemmessagehandler.java:27) 03-24 16:40:10.690: w/system.err(5798): @ android.os.handler.dispatchmessage(handler.java:102) 03-24 16:40:10.690: w/system.err(5798): @ android.os.looper.loop(looper.java:136) 03-24 16:40:10.690: w/system.err(5798): @ android.app.activitythread.main(activitythread.java:5017) 03-24 16:40:10.690: w/system.err(5798): @ java.lang.reflect.method.invokenative(native method) 03-24 16:40:10.690: w/system.err(5798): @ java.lang.reflect.method.invoke(method.java:515) 03-24 16:40:10.690: w/system.err(5798): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:779) 03-24 16:40:10.690: w/system.err(5798): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:595) 03-24 16:40:10.690: w/system.err(5798): @ dalvik.system.nativestart.main(native method)
i opening webview this.
intent = new intent(mymainactivity.this,webviewactivity.class); it.putextra("url", url); parentactivity parent = (parentactivity) getparent(); parent.startchildactivity("webviewactivity", it);
my webviewactivity code this.
string url = in.getstringextra("url"); webview.getsettings().setjavascriptenabled(true); webview.getsettings().setbuiltinzoomcontrols(true); webview.getsettings().setloadwithoverviewmode(true); webview.getsettings().setusewideviewport(true); webview.getsettings().setjavascriptcanopenwindowsautomatically(true); webview.setwebviewclient(client); webview.loadurl(url);
may know correct way achieve objective?
you can add webview programmatically instead of layout file.
replace webview linearlayout (or appropriate) , instance of layout.
create new webview in activity dynamically.
code below:
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_webview); urls = getintent().getstringextra("key_url"); linearweb = (linearlayout) findviewbyid(r.id.webviewlayout); webview = new webview(getparent()); webview.getsettings().setjavascriptenabled(true); webview.getsettings().setsupportzoom(true); webview.getsettings().setdomstorageenabled(true); progressbar.setvisibility(view.gone); linearweb.addview(webview); showbox(); } public void showwebview() { if (!((activity) getparent()).isfinishing()) { setupaction(); } } private void setupaction() { if (!textutils.isempty(urls)) { webview.loadurl(urls); this.webview.setwebviewclient(new webviewclient() { @override public boolean shouldoverrideurlloading(webview view, string url) { view.loadurl(url); return true; } }); this.webview.setwebviewclient(new webviewclient() { @override public void onpagestarted(webview view, string url, bitmap favicon) { progressbar.setvisibility(view.visible); } public void onreceivederror(webview view, int errorcode, string description, string failingurl) { progressbar.setvisibility(view.gone); } @override public void onpagefinished(webview view, string url) { progressbar.setvisibility(view.gone); } }); } }
Comments
Post a Comment