shouldOverrideUrlLoading返回方法

Dar*_*pan 3 android android-webview

我正在使用这种方法 - 返回true或者super.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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

Dar*_*pan 13

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

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

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

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

所以,你的应用程序将处理它.即.您的应用必须具有一些功能才能使用该网址.即使你只想在你的页面中加载页面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;
}
Run Code Online (Sandbox Code Playgroud)

在这里,如果你点击第二页上的任何链接,它将不会去任何地方.因为在这个函数你的if条件不满足,它返回true所以它会看到应用程序是否实现了某些东西.既然我们没有,那么它只会留在那里.

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