您的位置:首页 > 移动开发

[原][Android]All WebView methods must be called on the same thread.

2014-06-19 19:29 645 查看

问题

webView调用JS出错。

class TestJS {

......

public TestJS(){

}

public void save(String data){

webView.loadUrl("javascript: alert(" + data +")");

}

......

}

W/WebView(2088): java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread. (Expected Looper Looper (main, tid 1) {b3dbcb18} called on Looper (JavaBridge, tid 120) {b44a1af8}, FYI main Looper is Looper (main, tid 1) {b3dbcb18})

W/WebView(2088): at android.webkit.WebView.checkThread(WebView.java:2063)

W/WebView(2088): at android.webkit.WebView.loadUrl(WebView.java:794)

W/WebView(2088): at com.ue.oa.activity.XFormActivity.alert(XFormActivity.java:180)

W/WebView(2088): at com.ue.oa.activity.XFormActivity$FormActions.save(XFormActivity.java:193)

W/WebView(2088): at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)

W/WebView(2088): at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:27)

W/WebView(2088): at android.os.Handler.dispatchMessage(Handler.java:102)

W/WebView(2088): at android.os.Looper.loop(Looper.java:136)

W/WebView(2088): at android.os.HandlerThread.run(HandlerThread.java:61)

解决

将save方法修改为:

public void save(String data){

webView.post(new Runnable() {

@Override

public void run() {

webView.loadUrl("javascript: alert(" + data +")");

}

});

}

【Reference】

[1] 《android webview.loadUrl won't load another webpage》 : http://stackoverflow.com/questions/21955593/android-webview-loadurl-wont-load-another-webpage
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐