StackOverflow 社区!
我在使用 NavHost 和 RememberNavController 进行 Jetpack Compose 导航时遇到问题。我的应用程序在大多数情况下都按预期工作,但偶尔,当我点击按钮在屏幕之间切换时,内容会消失,只有 Surface 仍然可见。
这是我的代码的简化版本:
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val navController = rememberNavController()
NavigationTestTheme {
Surface(
modifier = Modifier.fillMaxSize(),
color = Color.Cyan
) {
NavHost(navController = navController, startDestination = "First") {
composable(route = "First") {
FirstScreen(onButtonTap = { navController.navigate("Second") })
}
composable(route = "Second") {
SecondScreen(onButtonTap = { navController.popBackStack() })
}
}
}
}
}
}
}
@Composable
fun FirstScreen(onButtonTap: () -> Unit) {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxSize()
.background(Color.Blue)
) {
CustomButton(title = "To Second View") {
onButtonTap()
}
}
}
@Composable
fun SecondScreen(onButtonTap: () -> Unit) {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxSize()
.background(Color.Green)
) {
CustomButton(title = "Pop View") {
onButtonTap()
}
}
}
@Composable
fun CustomButton(title: String, onClick: () -> Unit) {
Button(
onClick = { onClick() },
modifier = Modifier.size(width = 200.dp, height = 40.dp)
) {
Text(text = title)
}
}
预期的行为是:
但是,有时当我点击 FirstScreen 和 SecondScreen 上的按钮来切换视图时,视图会从后堆栈中删除,并且只有青色的 Surface 仍然可见。
我尝试简化代码并隔离问题,但我似乎无法查明根本原因。任何有关可能导致此问题的原因的建议或见解将不胜感激。
提前感谢您的帮助!