Met*_*hew 3 android kotlin android-jetpack-navigation android-jetpack-compose
我想要这样的导航:
-我有三个屏幕:“登录”、“注册”和“帐户恢复”;
-从每个屏幕,我可以导航到任何其他屏幕;
-当我从“登录”屏幕导航到“注册”,然后返回“登录”(单击“转到登录”按钮)时,我希望拥有与开始时相同的屏幕,而不是新屏幕。
现在,每次当我返回“登录”时,我都会看到一个新屏幕:(
我的导航主机:
val navController = rememberNavController()
NavHost(navController = navController, startDestination = Screens.Login.route) {
composable(route = Screens.Recovery.route) {
RecoveryScreen(navController = navController)
}
composable(route = Screens.Login.route) {
LoginScreen(navController = navController)
}
composable(route = Screens.Registration.route) {
RegistrationScreen(navController = navController)
}
}
Run Code Online (Sandbox Code Playgroud)
指导我怎么挖?
我迟到了,但它可能会帮助别人检查 GitHub 中的 Jetnews 示例应用程序,像这样导航
navController.navigate(JetnewsDestinations.HOME_ROUTE) {
// Pop up to the start destination of the graph to
// avoid building up a large stack of destinations
// on the back stack as users select items
popUpTo(navController.graph.findStartDestination().id) {
saveState = true
}
// Avoid multiple copies of the same destination when
// reselecting the same item
launchSingleTop = true
// Restore state when reselecting a previously selected item
restoreState = true
}
Run Code Online (Sandbox Code Playgroud)
这可以避免多个返回堆栈,还可以恢复先前打开的目的地的状态