Android中 webView调用JS出错的解决办法
问题
webView调用JS出错。
classTestJS{ ...... publicTestJS(){ } publicvoidsave(Stringdata){ webView.loadUrl("javascript:alert("+data+")"); } ...... }
W/WebView(2088):java.lang.Throwable:AWebViewmethodwascalledonthread'JavaBridge'.AllWebViewmethodsmustbecalledonthesamethread.(ExpectedLooperLooper(main,tid1){b3dbcb18}calledonLooper(JavaBridge,tid120){b44a1af8},FYImainLooperisLooper(main,tid1){b3dbcb18}) W/WebView(2088): atandroid.webkit.WebView.checkThread(WebView.java:2063) W/WebView(2088): atandroid.webkit.WebView.loadUrl(WebView.java:794) W/WebView(2088): atcom.ue.oa.activity.XFormActivity.alert(XFormActivity.java:180) W/WebView(2088): atcom.ue.oa.activity.XFormActivity$FormActions.save(XFormActivity.java:193) W/WebView(2088): atcom.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(NativeMethod) W/WebView(2088): atcom.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27) W/WebView(2088): atandroid.os.Handler.dispatchMessage(Handler.java:102) W/WebView(2088): atandroid.os.Looper.loop(Looper.java:136) W/WebView(2088): atandroid.os.HandlerThread.run(HandlerThread.java:61)
解决
将save方法修改为:
publicvoidsave(Stringdata){ webView.post(newRunnable(){ @Override publicvoidrun(){ webView.loadUrl("javascript:alert("+data+")"); } }); }
以上就是解决方法了,是不是很简单呢,希望小伙伴们能够喜欢。