Android Jetpack Compose Navigation无法弹出起始目的地回退栈问题求解
问题原因
你当前配置的popUpTo参数为route_to_b,仅会将回退栈中到B页面(含B页面,inclusive = true触发)的所有页面弹出,作为起始目的地的A仍保留在栈底,因此点击返回键会回到A页面。
解决方案
要清空A、B两个页面,需要将popUpTo的目标指定为A页面的路由,同时开启inclusive = true将A也弹出回退栈,修改B跳转到C的逻辑如下:
Button(onClick = { navController.navigate("route_to_c") { // 弹出回退栈直到A页面的位置,同时包含A页面一起弹出 popUpTo("route_to_a") { inclusive = true } // 可选配置:避免C已在栈顶时重复创建实例 launchSingleTop = true } }) {}
如果不想硬编码路由字符串,也可以直接弹出到当前导航图的根节点,效果一致:
Button(onClick = { navController.navigate("route_to_c") { popUpTo(navController.graph.id) { inclusive = true } launchSingleTop = true } }) {}
修改后跳转至C页面时,回退栈内仅保留C页面,点击系统返回键会直接退出应用,符合需求。
内容的提问来源于stack exchange,提问作者Bruno Baccho
相关产品推荐
相关产品推荐

