1

我在 Android 上使用最新版本的导航和撰写,我遇到了一个错误,我无法弹出导航的起始目的地。问题是,如果我有 3 个目的地(A、B、C)并且从 A-> B -> C 出发,我无法从 backstack 中弹出 A,但是当我调用时会弹出 B popUpTo(B) inclusive = true,导致后退按钮回到A。

我的代码:

导航主机

setContent {

        val navController = rememberNavController()

        NavHost(
            navController = navController,
            startDestination = "route_to_a"
        ) {

            composable("route_to_a") {
                LoginScreen(navController)
            }

            composable("route_to_b") {
                RegisterScreen(navController)
            }

            composable("route_to_c") {
                HomeScreen(navController = navController)
            }
        }
    }

导航

- A到B

Button(onClick = { navController.navigate("route_to_b")}) {}

- B到C

Button(onClick = {
    navController.navigate("route_to_c") {
        popUpTo("route_to_b") {
            inclusive = true
        }
    }
}) {}

我想创建一个流程,在上 C 后 A 和 B 都不在后堆栈上。但由于某种原因,我无法从后堆栈中删除 A ...我该怎么做?

4

1 回答 1

2

代替,

popUpTo("route_to_b") {
    inclusive = true
}

有了这个,

popUpTo("route_to_a") {
    inclusive = true
}

文档

// Pop everything up to and including the "home" destination off
// the back stack before navigating to the "friends" destination
navController.navigate("friends") {
    popUpTo("home") { inclusive = true }
}
于 2021-10-22T07:08:02.713 回答