【问题标题】:Android WebViewClient problemAndroid WebViewClient 问题
【发布时间】:2011-03-01 21:14:11
【问题描述】:

我定义了一个扩展 WebViewClient 的私有类,并将我的 WebView 的客户端设置为该类的实例 (webView01.setWebViewClient(new Callback());)。

类定义如下:

private class Callback extends WebViewClient {
    public void onLoadResource (WebView view, String url) {
    }
    public void onPageStarted (WebView view, String url, Bitmap favicon) {
    }
    public void onPageFinished (WebView view, String url) {
        Animation anim = AnimationUtils.loadAnimation(MyNews.this, R.anim.webviewanim);
        view.startAnimation(anim);
    }
    public void onReceivedError (WebView view, int errorCode, String description, String failingUrl) {
    }   
    public boolean shouldOverrideUrlLoading (WebView view, String url) {
        Log.e("loading url", url);
        return false;
    }
}

我的问题是 onPageFinished 肯定会被调用,但 shouldOverrideUrlLoading 永远不会被调用。

我在这里做错了什么?

2010 年 6 月 13 日

更多信息。

我正在从字符串加载初始页面( webView01.loadDataWithBaseURL("fake://fake", myHTML, "text/html", "UTF-8", null); )。

页面加载(并且有几个 onLoadResource 调用)并且 onPageFinished 在页面加载完成时被调用。

当用户点击页面中的 Anchor 链接时,不会调用 shouldOverrideUrlLoading,而是调用 onLoadResource。

当用户点击链接时,我需要调用完整的网络浏览器,但我从来没有机会覆盖 url 加载。

【问题讨论】:

  • 尝试添加@Override 声明,看看是否有任何显示。你的签名看起来不错,但也许我们都遗漏了一些东西......

标签: android


【解决方案1】:

从我在 webview 中介绍的内容到现在,当您调用 webview.load("website") 时,shouldOverrideUrlLoading() 不会被调用,但如果该网站重定向到另一个网站,它可以工作。 因此,解决方法是在您调用 webview.load("website") 时执行您想要完成的操作(例如调用写入日志 Log.e("loading url", url) 的函数),因为您已经知道url 和需要做什么, shouldOverrideUrlLoading() 只拦截从它自己的 webview 发送的请求。

希望我对您有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    相关资源
    最近更新 更多