2016-03-09 198 views
0

我正在处理绑定javascript和android。javascript android does not work

Web视图

visor.addJavascriptInterface(new WebAppInterface(this), "Android"); 
visor.setWebViewClient(new WebViewClient()); 

我的Web界面:为Android

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /> 

<script type="text/javascript"> 
    function showAndroidToast(toast) { 
     Android.showToast(toast); 
    } 
</script> 

执行适用于烤面包,但负载的网址没有按”

public class WebAppInterface { 
     Context mContext; 

     WebAppInterface(Context c) { 
      mContext = c; 
     } 

     @JavascriptInterface 
     public void showToast(String toast) { 
      Toast.makeText(mContext, toast+" cosas", Toast.LENGTH_SHORT).show(); 
      visor.loadUrl("www.google.com"); 
     } 
    } 

HTML负荷工作。我究竟做错了什么?

+0

更改您的标题:

mWebView.post(new Runnable() { @Override public void run() { mWebView.loadUrl("http://google.com"); } }); 
你的情况

等等到实际描述你的问题的东西。 – csmckelvey

+0

什么是“遮阳板”? –

+0

http://developer.android.com/reference/android/webkit/WebView.html提供了一个与您正在尝试执行的操作类似的示例。 –

回答

0

如果URL有它的第一个执行之后被加载,它必须从不同的线程加载这样的:

public class WebAppInterface { 
     Context mContext; 

     WebAppInterface(Context c) { 
      mContext = c; 
     } 

     @JavascriptInterface 
     public void showToast(String toast) { 
      Toast.makeText(mContext, toast+" cosas", Toast.LENGTH_SHORT).show(); 
      visor.post(new Runnable() { 
       @Override 
       public void run() { 
        visor.loadUrl("http://google.com"); 
       } 
      }); 
     } 
    } 
+0

谢谢!在第一次执行之后,在所有情况下,我们需要在另一个线程上loadurl? –

+0

是的。事实上,每当你想要加载一个URL时,你都会以相同的方式使用它。 – cprakashagr

+0

如果你这样做,你实际上确保主线程永远不会被阻塞。 – cprakashagr