0

インターネットから URL をロードする webview がありますが、接続がない場合 (onReceiedError)、assets フォルダーにローカルに保存された html ドキュメントをロードします。

しかし、その特定のアクティビティ (ローカル HTML をロードする) で [戻る] ボタンを押すと、前のアクティビティには戻らず、代わりにページを更新しようとします。

これが私のコードです。

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;
    }
    }

インターネットからロードする通常の Web ページで問題なく動作します。

4

1 に答える 1

0

coz onReceivedError で url を変更します。そのため、ゴーバック イベントは発生しません。

トーストメッセージを表示して削除するだけですmWebView.loadUrl("file:///android_asset/offline.html");

于 2014-07-15T03:34:10.250 に答える