大佬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 B
1
0

全新版Jetpack进阶提升,系统性落地短视频App

全新版Jetpack进阶提升,系统性落地短视频App

323 学习 · 114 问题

查看课程