问题是:html
A WebView method was called on thread 'JavaBridge'. All WebView methods must be called on the same
我英语很差看不太懂,大体的了解了下缘由。java
以前个人代码是这样。android
1 @JavascriptInterface 2 public void needLogin(String username,String password) { 3 if (username.equals("abc")&&password.equals("123")){ 4 Toast.makeText(MainActivity.this,"登陆成功",Toast.LENGTH_SHORT).show(); 5 webView.loadUrl("file:///android_res/raw/test1.html"); 6 }else { 7 Toast.makeText(MainActivity.this,"登陆失败",Toast.LENGTH_SHORT).show(); 8 } 9 }
运行就错了,就是在webView从新loadUrl的时候出现了问题。web
而后我这样改了下,就ok了,ide
1 @JavascriptInterface 2 public void needLogin(String username,String password) { 3 if (username.equals("abc")&&password.equals("123")){ 4 Toast.makeText(MainActivity.this,"登陆成功",Toast.LENGTH_SHORT).show(); 5 webView.post(new Runnable() { 6 @Override 7 public void run() { 8 webView.loadUrl("file:///android_res/raw/test1.html"); 9 } 10 }); 11 12 }else { 13 Toast.makeText(MainActivity.this,"登陆失败",Toast.LENGTH_SHORT).show(); 14 } 15 }
我想你们确定猜到了什么了。webView会checkThread,致使不行,由于在js调用后的Java回调线程并非主线程。post