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

Android Studio中BottomNavigationView的switch case常量表达式错误求助

解决BottomNavigationView switch case需常量表达式的问题

Android Studio中BottomNavigationView的switch case语句需常量表达式

这个报错是因为Java里switch的case分支要求必须是编译期常量,而BottomNavigationView对应的menu item id如果是通过@+id/xxx定义的,在部分编译环境下不会被识别为常量,导致switch无法正常使用。换成if-else语句即可解决,具体写法如下:

Java版本写法

// 获取点击的item id
int selectedId = item.getItemId();
if (selectedId == R.id.home) {
    // 处理首页点击逻辑
} else if (selectedId == R.id.dashboard) {
    // 处理仪表盘点击逻辑
} else if (selectedId == R.id.notifications) {
    // 处理通知页点击逻辑
}

Kotlin版本写法

如果用Kotlin,直接用when表达式更简洁,而且不受Java switch的常量限制:

when (item.itemId) {
    R.id.home -> {
        // 首页点击逻辑
    }
    R.id.dashboard -> {
        // 仪表盘点击逻辑
    }
    R.id.notifications -> {
        // 通知页点击逻辑
    }
}

如果不想换写法,也可以检查build.gradle(Module)里的配置,确保compileSdkVersion和targetSdkVersion使用较新版本,新版AGP会把R类中的id默认处理为常量,也能解决这个问题。

内容的提问来源于stack exchange,提问作者Chandra Sekhar Sanapala

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:12:11