我正在使用这种方法 -
并返回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);
}
}
答案 0 :(得分:11)
我花了一些时间在所有场景上做了一些排列。这是我发现的 -
return false
- >如果你使用它,你甚至不需要加载网址,即不需要放loadUrl(url)
。 WebView
会自动加载网址。
return true
- >当前网址不会加载到WebView
,引用Android site
如果提供了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;
}
在这里,如果您点击第二页上的任何链接,它将不会去任何地方。因为在此功能中您的if
条件无效,所以它会返回true
,因此它会看到应用是否实现了某些功能。因为我们没有,所以它只会留在那里。
我试图简化它以帮助新的开发人员。
答案 1 :(得分:0)
如果您返回true,则表示您处理了该事件,操作系统将不会对该事件执行任何操作 如果您调用了super函数,则让OS处理该事件(在浏览器中打开它)。