Android WebView自定义错误页不会立即显示
当webView出现错误时,我使用此代码将用户重定向到自定义错误页,但是在重定向到自定义错误页之前,网页上的浏览器错误在几毫秒内可见 有趣的是,我在error.html中有一个重试按钮,它试图再次连接到目标网页。当我在“重试”上快速单击时,我甚至可以清楚地看到浏览器错误页面,例如带有浏览器消息的404页面网页不可用!这是不好的,因为我想完全隐藏错误,特别是在浏览器错误页面中可见的由错误引起的网页地址Android WebView自定义错误页不会立即显示,android,webview,Android,Webview,当webView出现错误时,我使用此代码将用户重定向到自定义错误页,但是在重定向到自定义错误页之前,网页上的浏览器错误在几毫秒内可见 有趣的是,我在error.html中有一个重试按钮,它试图再次连接到目标网页。当我在“重试”上快速单击时,我甚至可以清楚地看到浏览器错误页面,例如带有浏览器消息的404页面网页不可用!这是不好的,因为我想完全隐藏错误,特别是在浏览器错误页面中可见的由错误引起的网页地址 public void onReceivedError(WebView view, int er
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
webview.post(new Runnable() {
@Override
public void run() {
webview.loadUrl("file:///android_asset/htmls/error.html");
}
});
};
我应该如何在收到错误后立即隐藏WebView?是否有其他方法可以改进接收错误行为?您正在声明
WebView视图
,但您正在引用WebView.post()
和WebView.loadUrl()
试试这个,这是工作代码
非常感谢。当@perm发布了一个答案时,我刚刚纠正了这个问题,但还没有运气。谢谢。这工作得很好,但我使用了两个变化。我使用了
view.loadUrl(“about:blank”)
而不是view.clearView()
,因为它已被弃用。我还删除了view.canGoBack()
,因为一个常见的错误是连接不可用,并将用户重定向到不需要的页面。view.stopLoading()
帮我完成了这项工作
public void onReceivedError(WebView webview, int errorCode, String description, String failingUrl) {
webview.post(new Runnable() {
@Override
public void run() {
webview.loadUrl("file:///android_asset/htmls/error.html");
}
});
};
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(MainActivity.this, "Error! " + description, Toast.LENGTH_SHORT).show();
//Clearing the WebView
try {
view.stopLoading();
} catch (Exception e) {
e.printStackTrace();
}
try {
view.clearView();
} catch (Exception e) {
e.printStackTrace();
}
if (view.canGoBack()) {
view.goBack();
}
String ErrorPagePath = "file:///android_asset/htmls/error.html";
view.loadUrl(ErrorPagePath);
super.onReceivedError(view, errorCode, description, failingUrl);
}
});