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()
Android Jetpackプログラミング Android Studio 4 + Kotlin対応
- 作者:津耶乃, 掌田
- 発売日: 2020/09/18
- メディア: 単行本
- 作者:Dmitry Jemerov,Svetlana Isakova
- 発売日: 2017/10/31
- メディア: 単行本(ソフトカバー)