大佬help ,help!
来源:2-8 Jetpack Navigation 组件常用API之clearBackStack实践

weixin_慕设计8509906
2023-09-24
先使用popBackStack弹出fragmentB,C 页面跳转到A 然后在使用clearBackStack(fragmentC),然后setRestoreState到B,还会有fragmentC的onCreate,当前栈顶为C,显示为C,c不应该被clearBackStack了吗?
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
tagsPageBinding.toUserFragment.setOnClickListener {
findNavController().popBackStack(R.id.home_fragment,inclusive = false,saveState = true)
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
homePageBinding.homeButton.setOnClickListener {
if(flag){
findNavController().navigate(R.id.category_fragment)
}else{
findNavController().navigate(R.id.category_fragment,null,NavOptions.Builder().setRestoreState(true).build())
}
}
homePageBinding.clearButton.setOnClickListener {
val navController : NavController = findNavController()
navController.clearBackStack(R.id.tags_fragment)
flag = false
}
}
写回答
1回答
-
LovelyChubby
2023-09-24
使用popBackStack弹出fragmentB,C 页面时,BC会作为一个整体进行路由栈状态保存,其中key为b页面id
在A 使用clearBackStack(fragmentC) 此时是无效的。可以clearBackStack B10
相似问题