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

时间:2018-04-24 06:05:51

标签: android webview

当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行为?

2 个答案:

答案 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);
            }
        });