2010-06-09 56 views
1

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

类定义如下:

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(“假://假”,myHTML,“text/html”,“UTF-8”,null); )加载初始页面。

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

当用户在页面上点击锚链接时,不是调用shouldOverrideUrlLoading,而是调用onLoadResource。

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

+0

尝试添加'@ Override'声明并查看是否有任何内容显示。你的签名看起来不错,但也许我们都错过了一些东西...... – CommonsWare 2010-06-09 22:01:42

回答

1

从我在webview中推荐到现在,当您调用webview.load(“网站”)时不会调用shouldOverrideUrlLoading(),但是如果此网站已重定向到另一个,它将起作用。 因此,当你调用webview.load(“网站”)时(比如调用一个写入日志Log.e(“加载url”,url)的函数),你的工作就是做你想做的事情,因为你已经知道url和需要做什么,shouldOverrideUrlLoading()只拦截webview发送的请求。

希望我有帮助。