インターネットから 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 ページで問題なく動作します。