嗨,我是android NavigationManager的新手。
考虑在nav_graph中连接的片段A,B和C,如图所示。
基本上,我想要实现的是直接从片段A导航到C。但是,当单击“后退”按钮时,我希望它的行为就像我第一次进入片段B。
所以A-> C,在后退按钮上:C-> B-> A
有没有办法,如何在不使用NavigationManager实际显示片段B的情况下将片段B添加到后堆栈?
谢谢。
答案 0 :(得分:2)
因此,看来阅读文档时我应该格外小心。我错过了this site。
有自定义后退行为的机制。我要做的就是将这段代码添加到片段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。