当webView出现错误时,我使用此代码将用户重定向到自定义错误页面,但在重定向到自定义错误页面之前,网页上的浏览器错误会显示几毫秒。
有趣的是,我在 error.html 中有一个再试一次按钮,它试图再次连接到目标网页。当我再次快速点击时,我甚至可以清楚地看到浏览器错误页面,例如浏览器消息网页不可用的404页面!这不好,因为我想完全隐藏错误,尤其是网页地址导致的错误,这在浏览器错误页面中是可见的。
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?是否有另一种方法可以改善onReceivedError行为?
答案 0 :(得分:0)
您宣布WebView view
,但您引用的是webview.post()
和webview.loadUrl()
。
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");
}
});
};
答案 1 :(得分:0)
试试这个,这是工作代码。
@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);
}
});