読者です 読者をやめる 読者になる 読者になる

布団の中にいたい

最近Androidのアプリ開発の勉強をし始めた人.普段は会社でずっと資料を作ってる人

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で指定してしまえばいいので,汎用性はありそうだなーという印象.