Toast在webview中不起作用

这是我的代码,这是逐步从developer.android.com

无论我运行多少次,它都无法正常工作。

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(); } } } 

当我运行我的应用程序时,网页将加载,toast永远不会显示。

我似乎无法找到问题。 有人可以告诉我这是否适用于他们?

编辑:这里有一些我很困惑的事情。 在此之后,说明是

这将在WebView中创建一个名为Android for JavaScript的界面。 此时,您的Web应用程序可以访问WebAppInterface类。 例如,以下是一些HTML和JavaScript,当用户单击按钮时,使用新界面创建Toast消息:

   function showAndroidToast(toast) { Android.showToast(toast); }  

我不知道js代码的哪一部分要么…

我不知道js代码的哪一部分要么…

在您的资源文件夹中创建一个html页面,假设名为myWonderfulWebPage.html

将以下HTML代码复制到其中:

   

如您所见,当您单击按钮时,将调用函数showAndroidToast ,此函数将调用您在Java代码中定义的函数。

现在返回您的活动并将此页面加载到您的webview中:

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

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

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

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

Google.com不会调用您添加了桥接的JSfunction 。 您需要使用自己的网页确实调用该function,无论是本地还是网络。-.-