2

如果我单击 webview 中的链接,shouldOverrideUrlLoading() 永远不会被调用。(它不显示吐司或记录任何内容)。我也尝试过 onPageFinished 并且它也没有被调用。我阅读了其他用户遇到问题的帖子,这些问题不仅仅有时被调用,但在我的情况下它被完全忽略了。

    webview = new WebView(MyActivity.this);

    webview.getSettings().setBuiltInZoomControls(true);
    webview.getSettings().setDisplayZoomControls(false);
    webview.loadData(Html.getHtml(), "text/html", "UTF-8");
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient() {

        @Override
        public boolean  shouldOverrideUrlLoading(WebView view, String url) {
            new M("shouldOverrideUrlLoading",getApplicationContext());
            Log.v("ESSE3", "shouldOverrideUrlLoading()");

            System.out.println(url);

            System.out.println(Html.getHtml());
            webview.loadData(Html.getHtml(), "text/html", "UTF-8");
                            return true;

        }
    });
    webview.setWebViewClient(new WebViewClient());
    setContentView(webview);

尝试启用/不启用 javascript 或在方法中返回 true 或 false。

4

1 回答 1

8

你打setWebViewClient()了两次电话。一次使用您的覆盖方法,一次使用空WebViewClient!这就是为什么您的方法没有被调用的原因。

webview.setWebViewClient(new WebViewClient() {

    @Override
    public boolean  shouldOverrideUrlLoading(WebView view, String url) {
        ....
    }
});
webview.setWebViewClient(new WebViewClient());
于 2012-09-18T14:23:37.337 回答