こんにちは、Android NavigationManager は初めてです。
図に示すように、nav_graph に接続されたフラグメント A、B、および C を検討してください。
基本的に私が達成しようとしているのは、フラグメント A から直接 C に移動することです。
A->C、背面ボタン: C->B->A
NavigationManager を使用して実際にフラグメント B を表示せずにバックスタックにフラグメント B を追加する方法はありますか?
こんにちは、Android NavigationManager は初めてです。
図に示すように、nav_graph に接続されたフラグメント A、B、および C を検討してください。
基本的に私が達成しようとしているのは、フラグメント A から直接 C に移動することです。
A->C、背面ボタン: C->B->A
NavigationManager を使用して実際にフラグメント B を表示せずにバックスタックにフラグメント B を追加する方法はありますか?
したがって、ドキュメントを読むときはもっと注意する必要があるようです。このサイトを見逃していました。
カスタム バック動作のメカニズムがあります。私がする必要があったのは、このコードをフラグメント C クラスに追加することだけでした。
//use onResume if you want to handle orientation change
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val callback = requireActivity().onBackPressedDispatcher.addCallback(this, object :
OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
val options = NavOptions.Builder()
.setPopUpTo(R.id.fragmentC, true)
.build()
navController.navigate(R.id.fragmentB, options)
}
})
}
私の考え方はずっと間違っていました。C を起動するときに B をバックスタックに追加しようとしていました。代わりに、[戻る] ボタンを押したときにフラグメント C で行う必要があったのは、B に進み、バックスタックから C を削除することでした。