嗨,我是 android NavigationManager 的新手。
考虑在 nav_graph 中连接的片段 A、B 和 C,如图所示。
基本上我想要实现的是从片段 A 直接导航到 C。但是当单击后退按钮时,我希望它的行为就像我在片段 B 中的第一个一样。
所以A->C,后退按钮:C->B->A
有什么方法可以将片段 B 添加到 backstack 而不使用 NavigationManager 实际显示它?
嗨,我是 android NavigationManager 的新手。
考虑在 nav_graph 中连接的片段 A、B 和 C,如图所示。
基本上我想要实现的是从片段 A 直接导航到 C。但是当单击后退按钮时,我希望它的行为就像我在片段 B 中的第一个一样。
所以A->C,后退按钮:C->B->A
有什么方法可以将片段 B 添加到 backstack 而不使用 NavigationManager 实际显示它?
所以看起来我在阅读文档时应该更加小心。我错过了这个网站。
有自定义返回行为的机制。我需要做的就是将此代码添加到片段 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 添加到 backstack。我必须在按下后退按钮的片段 C 中做的是前进到 B 并从 backstack 中删除 C。