📱
Android:戻るキーをOnBackPressedDispatcherをつかって無効化する方法
はじめに
Androidアプリを作成している際に、ナビゲーションバーに表示されている「戻るキー」を無効にする必要がありました。その無効方法について説明します。結論から述べると、OnBackPressedDispatcherを使います。
ナビゲーションバーの戻るキー
やり方
onBackPressedを使う方法
まずはonBackPressed()メソッドをオーバーライドして実装する方法です。
これは戻るキーが押されたときに、onBackPressed()内に書かれた処理を実行します。
戻るキーを無効化したいActivity内で下記を記述し、関数内には何も記述しません。
override fun onBackPressed() {
super.onBackPressed()
// 何も書かない
}
しかし、テストで使用しているタブレットPCでは意図した動作をせず、戻るキーが機能してしまいました(無効化しませんでした)。
なので、後述するOnBackPressedDispatcherをつかうことで無効化することができました。
OnBackPressedDispatcherを使う方法
公式サイト「Android developers」では、onBackPressedではなくOnBackPressedDispatcherを使った方法で戻るキーを制御することが推奨されています。例えば、コードは下記のようになります。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// addCallbackでコールバックを追加
onBackPressedDispatcher.addCallback(callback)
}
//OnBackPressedCallbackのコンストラクタはtrueにすることでコールバックを有効にする
val callback = object : OnBackPressedCallback(true) {
//コールバックのhandleOnBackPressedを呼び出して、戻るキーを押したときの処理を記述
override fun handleOnBackPressed() {
//処理を記述
return
}
}
}
戻るキーを無効化する場合は、handleOnBackPressed内には何も記述しません。
override fun handleOnBackPressed() {
// 何も記述しない
return
}
おわりに
OnBackPressedDispatcherをつかうことで、戻るキーのボタンクリックイベントを制御することができました。
Discussion