質問: androidナビゲーションコンポーネントの戻るボタンの処理 navigation controllerを使用してシステムの戻るボタン操作を適切に処理する方法を知りたい。私のアプリには2つのフラグメント(fragment1とfragment2など)があり、fragment1にアクションがあり、fragment2への宛先があります。 1つを除いてすべてがうまくいきます-ユーザーがfragment2でシステムの戻るボタンを押すと、ダイアログを表示して(たとえばdialogfragmentを使用して)終了を確認します。この動作を実装する最良の方法は何ですか?ホストフラグメントでapp:defaultnavhost="true"を使用すると、ルールを無視して自動的に戻ります。さらに、このコンポーネントは何のためにありますか? 「ポップする」を使用する必要がありますか?
回答: ロジックに応じて、viewlifecycleownerを渡す必要がある現在のフラグメントのみを閉じたい場合、コードを以下に示します。 requireactivity().onbackpresseddispatcher.addcallback(viewlifecycleowner, object : onbackpressedcallback(true) { override fun handleonbackpressed() { requireactivity().finish() } }) ただし、どのフラグメントに関係なくbackpressedでアプリケーションを閉じたい場合(おそらくそれは望まないでしょう!)、viewlifecycleownerを渡さないでください。また、戻るボタンを無効にする場合は、handleonbackpressed()内で何もしないでください。以下を参照してください。 requireactivity().onbackpresseddispatcher.addcallback(viewlifecycleowner, object : onbackpressedcallback(true) { override fun handleonbackpressed() { // do nothing it will disable the back button } })