关于navController堆栈退出的问题
Closed this issue · 6 comments
artillerymans commented
页面:A、B、C、D
场景:假如我从A到D依次进入,在D的时候想回到A,但是不想保留B、C两个,这个是我应该怎么做,我发现设置相关的属性没法把B、C正常退出去
FunnySaltyFish commented
跳转的时候如下设置:
navController.navigate(screen.route) {
//当底部导航导航到在非首页的页面时,执行手机的返回键 回到首页
popUpTo(navController.graph.startDestinationId) {
saveState = true
//currentScreen = TranslateScreen.MainScreen
}
//从名字就能看出来 跟activity的启动模式中的SingleTop模式一样 避免在栈顶创建多个实例
launchSingleTop = true
//切换状态的时候保存页面状态
restoreState = true
}
见 translate 模块的 AppNavigation
。这是本应用采用的方式,应该符合你的要求
artillerymans commented
测试下来不行,实际结果是:C确实是退出了,但是B还在
我现在场景就是一个点击退出动作,页面要回到登入页面,这个时候在登入页面点击回退应该是不能回到其他页面,最多就是退出当前应用了
FunnySaltyFish commented
我理解了,我自己倒是没有做过这个需求。你可以试试navController.popBackStack(screen.route, true)
artillerymans commented
页面没反应了,跳转都不跳转了
FunnySaltyFish commented
嗯……那我也不太清楚了;不过这个popBackStack应该是在onClick里面用的,跳去登录页,且它的路径要在NavHost里注册。如果不行我也不太知道了 :(
artillerymans commented
感谢 我只能先对着别人的来多参考咯