如何解决错误:"Android库模块中的switch语句中不能使用资源ID"

Gp *_*ter 8 java android switch-statement

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

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

在此输入图像描述

我该如何解决这个错误?

Mic*_*odd 8

这里你的主要问题是switch语句需要常量值作为比较器,无论是文字值1,"hello"还是final在类级别声明的变量.的Android R.id值已不是自API 14是恒定的,如该错误消息表示,所以因此不能用作开关语句的一部分.

您可以选择使用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
}
Run Code Online (Sandbox Code Playgroud)

  • 谢啦。一个简单的技巧:在 switch 语句上按 alt+enter 即可由 android studio 自动替换它 (6认同)

小智 5

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

您认为:

...
android:tag="test" />
Run Code Online (Sandbox Code Playgroud)

在代码中:

switch(v.getTag()){
    case "test":
    // Do Something
    break;
}
Run Code Online (Sandbox Code Playgroud)