2016-03-09 195 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