Java 开发人员站点相互矛盾,认为webview应该覆盖
很多Android开发者都实现了自己的webview。 虽然在stackoverflow上讨论了许多与此主题相关的问题,但这可能是造成这种不清晰的原因之一 要在WebView中打开链接,android开发者需要定义自己的WebViewJava 开发人员站点相互矛盾,认为webview应该覆盖,java,android,webview,Java,Android,Webview,很多Android开发者都实现了自己的webview。 虽然在stackoverflow上讨论了许多与此主题相关的问题,但这可能是造成这种不清晰的原因之一 要在WebView中打开链接,android开发者需要定义自己的WebView 根据返回的false在shouldloverride中,应使用在当前Web视图中打开url。 (“当前”是指可能最近创建或使用的?) 根据和各种博客: public boolean shouldOverrideUrlLoading(WebView view, S
- 根据返回的
在false
在当前Web视图中打开url。 (“当前”是指可能最近创建或使用的?)shouldloverride中,应使用
- 根据和各种博客:
public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; }
必须返回给我true
回答将有助于我们的团队和许多其他使用android WebView的开发人员。谢谢。为了在当前WebView(而不是浏览器)中打开链接,您应该返回false,如下所示:
mWebView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url){
return false;
}
});
只要实现setWebViewClient(..),my answer和AxSample就会做同样的事情。另一方面,如果您不实施,浏览器将启动Instad。如果您决定实施WebViewClient:
webView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// My own condition to decide if I should skip URL loading
boolean avoidURLLoading = ...
if (avoidURLLoading)
{
// Ask the WebView to avoid loading the URL,
// I want to manage this case on my own.
return true;
}
else
{
// Let the WebView load the URL
return false;
}
};
});
如果您没有实现WebViewClient,每次您要求WebView使用loadUrl
方法加载URL时,它都会要求活动管理器找到合适的应用程序来加载URL(通常是设备中安装的web浏览器)
WebViewClient中的默认实现应该覆盖以下内容
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}
所以如果你写下这样的东西
webView.setWebViewClient(new WebViewClient());
URL将加载到您自己的WebView中,而不是外部web浏览器中
当您想修改URL,然后用另一个loadUrl
调用加载新URL时,或者当您只是想避免加载URL并以不同的方式处理请求时,通常会在shouldOverrideUrlLoading中返回true
你例子中的行为
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}
相当于
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}
因为您告诉WebView避免处理URL加载(
return true
),但您也使用view.loadUrl(URL)
发出另一个请求,所以实际上您最终加载了URL。谢谢,但是在developer.android.com/resources/tutorials/views/…还有一个自定义WebViewClient,返回true,以便加载当前WebView而不是浏览器。目前尚不清楚使用视图是返回false
还是返回true
。应使用load
打开当前Web视图中的链接。非常感谢您的回答。这确实澄清了问题。伟大的