如何在webview android中使用自定义错误页面时goback?

时间:2018-04-13 07:40:09

标签: android webview

如果存在以前的页面,我会尝试按回键时返回。我还使用自定义错误Html页面。但我发现使用goback将加载以前的错误html,我该怎么办?谢谢

        public void onReceivedError(WebView view, int errorCode,
                                    String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);

            requestLink = failingUrl;

            try {
                mWebView.stopLoading();
            } catch (Exception e) {
                Log.e(FLAG, e.toString());
            }
            try {
                mWebView.clearView();
            } catch (Exception e) {
                Log.e(FLAG, e.toString());
            }


            mWebView.loadUrl("file:///android_asset/net_err.html");
            mWebView.invalidate();
        }

以及用于goback的代码

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK) {
        if (mWebView.canGoBack()) {
            mWebView.goBack();

            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}

和要刷新的代码,由js在错误html中调用。

    @JavascriptInterface
    public void refreshPage(){
        mWebView.post(new Runnable() {
            @Override
            public void run() {
                mWebView.loadUrl(requestLink);
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

试试这个

@覆盖

public boolean onKeyDown(int keyCode,KeyEvent event){

if(keyCode == KeyEvent.KEYCODE_BACK) {
    if (mWebView.canGoBack()) {
        mWebView.goBack();
     if (mWebView.canGoBack()) {
           mWebView.goBack();

        return true;
    }
  }
}
return super.onKeyDown(keyCode, event);

}