Android - Webview元素onClick事件没有触发?

时间:2016-11-28 16:54:17

标签: android android-layout webview android-webview onclicklistener

在Webview中,我正在加载一个本地index.html文件,并使用javaScript从远程向Webview添加HTML内容。 我希望在用户点击Webview包含的元素时执行一些任务,例如显示工具提示,警报框。 P.S听起来它有非常直接的解决方案。但我能够这样做! 谢谢!

2 个答案:

答案 0 :(得分:1)

shouldOverrideUrlLoading

离。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(url!= && url.endWith("your_url.html")) {

        //your tootip, alertIDialog, etc.

        // return true to report that we have intercepted the event
        return true;
      }
      return super.shouldOverrideUrlLoading(view, url);

https://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView,android.webkit.WebResourceRequest)

答案 1 :(得分:0)

将WebView添加到您的应用程序

<?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

在JAVA加载网址

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl("http://www.example.com");

添加INTERNET权限

<manifest ... >
<uses-permission android:name="android.permission.INTERNET" />
...

在网络视图中启用javascript

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(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();
}
}

您可以使用addJavascriptInterface()将此类绑定到在WebView中运行的JavaScript,并将界面命名为Android。例如:

WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "android");

在您的HTML中

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

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

希望这有助于你

来源https://developer.android.com/guide/webapps/webview.html#AddingWebView