2014-01-19 98 views
1

这里是我的代码,这是字面上步骤从developer.android.com敬酒不工作的WebView

一步,它只是不工作,不管有多少次我运行它。

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     WebView myWebView = (WebView) findViewById(R.id.webview); 


     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 


     myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
     myWebView.loadUrl("http://www.google.com"); 



    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

    public class WebAppInterface { 
     Context mContext; 

     /** Instantiate the interface and set the context */ 
     WebAppInterface(Context c) { 
      mContext = c; 
     } 

     /** Show a toast from the web page */ 
     @JavascriptInterface 
     public void showToast(String toast) { 
      Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); 
     } 
    } 

} 

当我运行我的应用程序,网页会加载,敬酒从不显露。

我似乎无法找到问题。有人能告诉我这是否适合他们吗?

编辑:这里有一些我很困惑。在此之后,指令是

这创建了一个称为Android for JavaScript的界面,运行在 WebView中。此时,您的Web应用程序可以访问 WebAppInterface类。例如,这里的一些HTML和JavaScript 创建使用新界面敬酒消息,当用户 点击一个按钮:

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

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

我不知道在哪里的js代码的那部分去要么..

+1

实际上调用'showToast()'的代码在哪里? – laalto

+0

我认为你误读了本教程。它说:_“在这个例子中,WebAppInterface类允许网页使用showToast()方法创建Toast消息。”_尝试创建一个html页面,并将其加载到webview中,就像它在教程。 –

+0

它是在谷歌网站的代码? – user1940676

回答

2

我不知道在哪里的js代码的部分要么去..

在Assets文件夹中创建一个HTML页面,让我们说评为myWonderfulWebPage.html

复制下面的HTML代码到它:

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

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

正如你所看到的,当你点击按钮,功能showAndroidToast将被调用,这个功能会叫你在Java中定义的一个码。

现在回到你的活动,而这个页面加载到您的网页流量:

myWebView.loadUrl("file:///android_asset/myWonderfulWebPage.html"); 

现在你会看到,它显示了一个空白页面,用一个按钮。点击它,它会在您的网页上显示Toast

+0

谢谢,这可以让我们看到很多东西。 –

1

如果你显示的代码是实际使用的代码,那么当然不起作用。

myWebView.loadUrl("http://www.google.com"); 

Google.com不调用JS功能,您添加了一个桥梁。你需要使用你自己的网页,确实调用了本地或网络上的功能 -

+0

谢谢,我对此很陌生,请原谅我的白痴。 –