WebView加载自定义error页面,解决自定义error页面但是原始error页面一闪而过的问题

来源:互联网 发布:香薰机哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/08 05:05

一般来说,webView加载自定义error页面是这样做:例如,我下面的代码在error之后加载了缓存页面.

mWebView.setWebViewClient(new WebViewClient() {            @Override            public void onPageFinished(WebView view, String url) {                mSpinnerDlg.dismiss();                // MIUI DEL:                // if (SettingsLicenseActivity.this.isResumed()) {                // mTextDlg.show();                // }            }            @Override            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {                try {                    view.stopLoading();                } catch (Exception e) {                    Log.e(TAG, e.toString());                }                try {                    view.clearView();                } catch (Exception e) {                    Log.e(TAG, e.toString());                }                               if (!TextUtils.isEmpty(mCache) && !TextUtils.isEmpty(failingUrl) && !failingUrl.equals(mCache)) {                    loadCache();                } else {                    showErrorAndFinish();                }            }        });

但是,这样做之后,页面error确实加载了缓存页面,却偶尔能够看到原始的error页面一闪而过.最终我找到的比较有效的办法是添加一句:

view.loadUrl("about:blank");

最终的代码是这样的.

mWebView.setWebViewClient(new WebViewClient() {            @Override            public void onPageFinished(WebView view, String url) {                mSpinnerDlg.dismiss();                // MIUI DEL:                // if (SettingsLicenseActivity.this.isResumed()) {                // mTextDlg.show();                // }            }            @Override            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {                try {                    view.stopLoading();                } catch (Exception e) {                    Log.e(TAG, e.toString());                }                try {                    view.clearView();                } catch (Exception e) {                    Log.e(TAG, e.toString());                }                view.loadUrl("about:blank");                if (!TextUtils.isEmpty(mCache) && !TextUtils.isEmpty(failingUrl) && !failingUrl.equals(mCache)) {                    loadCache();                } else {                    showErrorAndFinish();                }            }        });

本文参考了StackOverFlow上一个问题的回答:http://stackoverflow.com/questions/36284186/android-webview-custom-error-page


0 0
原创粉丝点击