在使用 Jetpack Compose 的导航组件时弹出由可组合项表示的屏幕(来自 "back stack")以返回上一屏幕?
Popping off screen (from "back stack") represented by a composable to go back to previous screen while using navigation component of Jetpack Compose?
我正在使用 Jetpack Compose 使用它的导航组件创建一个 activity 应用程序。我创建了可组合项来表示不同的屏幕,并将导航组件用作:
@InternalCoroutinesApi
@ExperimentalAnimationApi
@ExperimentalPagerApi
@RequiresApi(Build.VERSION_CODES.M)
@ExperimentalComposeUiApi
@Composable
fun ProgressNavigation(themeViewModel: ThemeViewModel?) {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = Constants.SPLASH
) {composable(Constants.SPLASH) {
ScreenAnimation {
Splash(navController = navController)
}
}
composable(Constants.HIW) {
ScreenAnimation {
LogoPage(false, true, navController = navController) { HowItWorks( navController = navController) }
}
}
.
.
.
}
假设我有 2 个屏幕(可组合项)“SignUp”和“TnC”。
用户在 SignUp 屏幕中输入注册详细信息,然后转到 TnC 屏幕。回来的时候
通过在 TnC 屏幕中按一个按钮进行注册屏幕,之前在注册中输入的详细信息应保持不变。我该如何实施?如果屏幕是活动,我会使用 onBackPressed
从后台弹出屏幕。
我该怎么做?
在 SingUp 可组合项中将 by remember
替换为 by rememberSaveable
,然后如果您只是向后导航,则可以使用 navController.popBackStack(),或者可以使用 popUpTo。如果您想进一步返回。
示例:
navController.popBackStack()
//or
navController.navigate("TnC") {
popUpTo("SignUp")
}
我正在使用 Jetpack Compose 使用它的导航组件创建一个 activity 应用程序。我创建了可组合项来表示不同的屏幕,并将导航组件用作:
@InternalCoroutinesApi
@ExperimentalAnimationApi
@ExperimentalPagerApi
@RequiresApi(Build.VERSION_CODES.M)
@ExperimentalComposeUiApi
@Composable
fun ProgressNavigation(themeViewModel: ThemeViewModel?) {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = Constants.SPLASH
) {composable(Constants.SPLASH) {
ScreenAnimation {
Splash(navController = navController)
}
}
composable(Constants.HIW) {
ScreenAnimation {
LogoPage(false, true, navController = navController) { HowItWorks( navController = navController) }
}
}
.
.
.
}
假设我有 2 个屏幕(可组合项)“SignUp”和“TnC”。
用户在 SignUp 屏幕中输入注册详细信息,然后转到 TnC 屏幕。回来的时候
通过在 TnC 屏幕中按一个按钮进行注册屏幕,之前在注册中输入的详细信息应保持不变。我该如何实施?如果屏幕是活动,我会使用 onBackPressed
从后台弹出屏幕。
我该怎么做?
在 SingUp 可组合项中将 by remember
替换为 by rememberSaveable
,然后如果您只是向后导航,则可以使用 navController.popBackStack(),或者可以使用 popUpTo。如果您想进一步返回。
示例:
navController.popBackStack()
//or
navController.navigate("TnC") {
popUpTo("SignUp")
}