0

我有一个从 Internet 加载 URL 的 webview,但是当没有连接(onReceiedError)时,它会在 assets 文件夹中加载本地保存的 html 文档。

但是当我在该特定活动(加载本地 HTML)上按下后退按钮时,它不会返回到上一个活动,而是尝试刷新页面。只有在 4-5 Back 按下后它才会返回。

这是我的代码。

private class HelloWebViewClient extends WebViewClient{    
         @Override
            public void onReceivedError(WebView view, int errorCode,                
                    String description, String failingUrl) {
             mWebView.getSettings().setBuiltInZoomControls(false);  
                mWebView.getSettings().setLoadWithOverviewMode(false); 
                mWebView.getSettings().setUseWideViewPort(false);   
             mWebView.loadUrl("file:///android_asset/offline.html"); 
         }


        public boolean shouldOverrideUrlLoading(WebView webview, String url)
        {
            webview.loadUrl(url);
            return true;

        }
    }

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

        }
        return super.onKeyDown(KeyCode, event);
    }

    @Override
    public void onBackPressed() 
    {
        this.finish();
        overridePendingTransition  (0, R.anim.right_slide_out);
        return;
    }
    }

适用于从 Internet 加载的普通网页。

4

1 回答 1

0

因为在 onReceivedError 你改变了 url 。所以不会有回退事件

你只需要显示吐司消息并删除mWebView.loadUrl("file:///android_asset/offline.html");

于 2014-07-15T03:34:10.250 回答