如何解决错误:“资源ID不能在安卓库模块的开关语句中使用”

2022-09-02 21:00:36

我将其他人创建的 Android 项目作为库模块导入到我的项目中。即使在清理和重建项目后,我也会收到以下错误:

常量表达式所需的资源 ID 不能在 Android 库的 switch 语句中使用

enter image description here

如何修复此错误?


答案 1

这里的主要问题是,语句需要常量值作为比较器,无论是文本值,还是在类级别声明的变量。自 API 14 以来,Android 值一直不是恒定的,如该错误消息中所述,因此不能用作 switch 语句的一部分。switch1"hello"finalR.id

您的替代方案是使用语句,因为它们不需要常量值,如下所示:if else

if (v.getId() == R.id.something) {
    // Do something
} else if (v.getId() == R.id.something_else) {
   // Do something else
}
// Repeat however many times required
else {
   // Default value
}

答案 2

您可以为每个视图设置一个标记,并在开关案例中使用该标记。像这样:

在您看来:

...
android:tag="test" />

在代码中:

switch(v.getTag()){
    case "test":
    // Do Something
    break;
}