You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击BottomNavigation项时抛出IllegalStateException问题求助

解决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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 17:38:13