怠慢プログラマーの備忘録

怠慢でナマケモノなプログラマーの備忘録です。

【Kotlin】端末の戻るボタンでWebViewでブラウザバックさせる

Androidの端末には機能レベルで戻るボタンがあります。

iOSではアプリの「戻る」行為はNavigationControllerに依存するかdismiss()を使用します。 Androidではこれを制御しないといけないので、iOSエンジニアとしてはここも大きな違いで戸惑うところもあるかと思います。

今回はWebView内でさらに画面遷移した時に、デフォルトの戻るボタンでブラウザバックさせる方法です。

Activityでやる方法とFragmentでやる方法で異なりますので2種類記載します。

Activity
    override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
        if (keyCode == KeyEvent.KEYCODE_BACK && this.webView!!.canGoBack()) {
            this.webView?.goBack()
            return true
        }
        return super.onKeyDown(keyCode, event)
    }
Fragment
        informationWebView.setOnKeyListener { v, keyCode, event ->
            (keyCode == KeyEvent.KEYCODE_BACK && event.action == KeyEvent.ACTION_DOWN).apply {
                webView.goBack()
            }
        }
        informationWebView.isFocusableInTouchMode = true
        informationWebView.requestFocus()

Kotlinイン・アクション

Kotlinイン・アクション