布団の中にいたい

Androidアプリ開発の勉強をしている傍らで、elasticsearchとかをいじってみたりしています。最近は数学の勉強が楽しくなってきました。

WebViewで戻るボタンを押したときに前のページに戻るようにする

AndroidでWebViewを使用して端末の戻るボタンをおした時,前のページに戻るのではなく,前のActivityに戻ってしまう状況になって色々困ったのでメモ.

このような状況で「前のページに戻る」という挙動を実装するには戻るボタンが押されたというイベントをフックする必要がある.Androidでは端末のボタンが押されたときに,onKeyDownというメソッドが呼ばれるので,onKeyDownをoverrideして,戻るボタンが押されたときに前のページに戻るという動作を差し込んでしまえばいい.以下がそのコード.

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    // 戻るボタンが押される かつ webviewで前に戻ることができるとき
    if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
        // 前のページに戻る
        webView.goBack()
        return true
    }

    return super.onKeyDown(keyCode, event)
}

今回は戻るボタンでしたが,他のボタンが押されたときでもKeyEventで指定してしまえばいいので,汎用性はありそうだなーという印象.