shouldOverrideUrlLoading返回方法

时间:2013-05-22 13:47:27

标签: android android-webview

我正在使用这种方法 - 并返回truesuper.shouldOverrideUrlLoading(view,url); 我为天真而道歉,但我不明白返回true或超类方法的区别是什么?

 @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            UltimatixTouchWebView webView = (UltimatixTouchWebView) view;

            if (null != url && ((url.endsWith(".js") || url.endsWith(".css")))
                    && (checkResource(url))) {
                return true;
            } else {
                return super.shouldOverrideUrlLoading(view, url);
            }
        }

2 个答案:

答案 0 :(得分:11)

我花了一些时间在所有场景上做了一些排列。这是我发现的 -

  1. return false - >如果你使用它,你甚至不需要加载网址,即不需要放loadUrl(url)WebView会自动加载网址。

  2. return true - >当前网址不会加载到WebView,引用Android site

      

    如果提供了WebViewClient,则返回true表示主机应用程序处理URL

  3. 因此,您的应用将处理它。即。您的应用必须具有一些功能才能使用该网址。即使您只想在WebView中加载页面,也必须编写webView.loadUrl(URL);。否则它将不会加载您的页面。

    在此示例中,假设您要从第一页转到second.html。

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    if(url.contains("second.html")){
                        Toast.makeText(con, "Second Page", Toast.LENGTH_LONG).show();
                        view.loadUrl(url);
                        }
                    return true;
    }
    

    在这里,如果您点击第二页上的任何链接,它将不会去任何地方。因为在此功能中您的if条件无效,所以它会返回true,因此它会看到应用是否实现了某些功能。因为我们没有,所以它只会留在那里。

    我试图简化它以帮助新的开发人员。

答案 1 :(得分:0)

如果您返回true,则表示您处理了该事件,操作系统将不会对该事件执行任何操作 如果您调用了super函数,则让OS处理该事件(在浏览器中打开它)。