FunnySaltyFish/FunnyTranslation

关于navController堆栈退出的问题

Closed this issue · 6 comments

页面:A、B、C、D
场景:假如我从A到D依次进入,在D的时候想回到A,但是不想保留B、C两个,这个是我应该怎么做,我发现设置相关的属性没法把B、C正常退出去

跳转的时候如下设置:

                           navController.navigate(screen.route) {
                                //当底部导航导航到在非首页的页面时,执行手机的返回键 回到首页
                                popUpTo(navController.graph.startDestinationId) {
                                    saveState = true
                                    //currentScreen = TranslateScreen.MainScreen
                                }
                                //从名字就能看出来 跟activity的启动模式中的SingleTop模式一样 避免在栈顶创建多个实例
                                launchSingleTop = true
                                //切换状态的时候保存页面状态
                                restoreState = true
                            }

见 translate 模块的 AppNavigation 。这是本应用采用的方式,应该符合你的要求

测试下来不行,实际结果是:C确实是退出了,但是B还在
我现在场景就是一个点击退出动作,页面要回到登入页面,这个时候在登入页面点击回退应该是不能回到其他页面,最多就是退出当前应用了

我理解了,我自己倒是没有做过这个需求。你可以试试navController.popBackStack(screen.route, true)

页面没反应了,跳转都不跳转了

嗯……那我也不太清楚了;不过这个popBackStack应该是在onClick里面用的,跳去登录页,且它的路径要在NavHost里注册。如果不行我也不太知道了 :(

感谢 我只能先对着别人的来多参考咯