提问者:小点点

如何解决错误:“Android库模块的switch语句中无法使用资源ID”[重复]


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

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

如何修复此错误?


共3个答案

匿名用户

这里您的主要问题是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的最终版本…

详细信息:开关突然断开