我将其他人创建的Android项目作为库模块导入到我的项目中。即使在清理和重建项目后,我也会收到以下错误:
常量表达式必填资源ID不能在Android库的switch语句中使用
如何修复此错误?
这里您的主要问题是switch
语句需要常量值作为比较器,无论是文字值(例如1
,"hello"
还是在类级别声明的最终
变量)。AndroidR.id
值自API14以来一直不是常量,如该错误消息中所述,因此不能用作switch语句的一部分。
您的替代方法是使用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
}
您可以为每个视图设置一个标签并在switch case中使用该标签。类似于这样:
在你看来:
...
android:tag="test" />
在代码中:
switch(v.getTag()){
case "test":
// Do Something
break;
}
尝试在其中一个项目上按F4:
public final class R {
public static final class anim {
public static int abc_fade_in = 0x7f010001;
public static int abc_fade_out = 0x7f010002;
它们不是最终的。
所以你需要使用if-else语句而不是switch。
作为历史记录,它们曾经是旧版本Android的最终版本…
详细信息:开关突然断开