2016-12-05 11 views
0
public class MainActivity extends Activity { 
    private static WebView mWebView; 
    etc... 

    // JS -> ANDROID 
    public class WebAppInterface { 
    Context mContext; 

    WebAppInterface(Context c) { 
     mContext = c; 
    } 

    @JavascriptInterface 
    public void fn1() { 
     mWebView.loadUrl("javascript:jsfn('testing123');"); 
    } 
    } 
} 

我收到此錯誤:如何在類WebAppInterface中運行webview.loadurl?

W/WebView: java.lang.Throwable: A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same thread.

+1

你可能的答案可能是在這裏:http://stackoverflow.com/questions/22607657/webview-methods-on-same-thread-error –

+0

感謝撒旦,將測試它later..really感謝您的幫助! –

回答

1

從JavaScript通過JavaScript回調接口對象在後臺線程,你不能直接更新UI線程執行。爲了在UI線程中發佈更新,您需要執行以下操作。

@JavascriptInterface 
public void fn1() { 
     mWebView.post(new Runnable() { 
      public void run() { 
       mWebView.loadUrl("javascript:" + s + ";"); 
      } 
     }); 
}