点击BottomNavigation项时抛出IllegalStateException问题求助
核心问题:语法错误
你的代码中存在一处明显的Lambda语法笔误,这是导致异常的直接原因:navController.graph.startDestinationRoute?.let { route - 这一行里的 route - 应该改为 route ->,缺失的箭头符号会破坏Lambda表达式结构,引发运行时异常。
完整修正后的代码
BottomNavigation(contentColor = colorResource(id = R.color.white)) { val navBackStackEntry by navController.currentBackStackEntryAsState() // 给currentRoute设置默认空字符串,避免空值匹配问题 val currentRoute = navBackStackEntry?.destination?.route ?: "" menuItems.forEach { BottomNavigationItem( label = { Text(text = it.title) }, alwaysShowLabel = true, selectedContentColor = Color.White, unselectedContentColor = Color.Gray, selected = currentRoute == it.route, onClick = { navController.navigate(it.route) { navController.graph.startDestinationRoute?.let { route -> popUpTo(route) { saveState = true } } launchSingleTop = true restoreState = true } }, icon = { Icon(imageVector = it.icon, contentDescription = it.title) } ) } }
额外排查点
- 确认
menuItems中的route值与导航图(nav_graph.xml)里定义的路由完全一致,包括大小写、路径结构。 - 检查
navController是否已正确绑定到当前页面的NavHostFragment,避免空引用问题。
内容的提问来源于stack exchange,提问作者asd
相关产品推荐
相关产品推荐

