欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android中 webView调用JS出错的解决办法

程序员文章站 2022-03-23 14:06:16
问题     webview调用js出错。 复制代码 代码如下:     class testjs {...

问题

    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 +")");
            }
        });
    }

以上就是解决方法了,是不是很简单呢,希望小伙伴们能够喜欢。