Android WebView自定义错误页不会立即显示

Android WebView自定义错误页不会立即显示,android,webview,Android,Webview,当webView出现错误时,我使用此代码将用户重定向到自定义错误页,但是在重定向到自定义错误页之前,网页上的浏览器错误在几毫秒内可见 有趣的是,我在error.html中有一个重试按钮,它试图再次连接到目标网页。当我在“重试”上快速单击时,我甚至可以清楚地看到浏览器错误页面,例如带有浏览器消息的404页面网页不可用!这是不好的,因为我想完全隐藏错误,特别是在浏览器错误页面中可见的由错误引起的网页地址 public void onReceivedError(WebView view, int er

当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?是否有其他方法可以改进接收错误行为?

您正在声明
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);
            }
        });