Android应用程序使用库项目来包含大部分应用程序代码,因为有两个版本的应用程序是从核心源构建的。自从IntelliJ IDEA更新(到v11),我在下面的每个案例陈述中收到此警告:
Resource IDs cannot be used in a switch statement in Android library modules
以下是代码:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_item_one: // Build error here
// Do stuff
return true;
case R.id.menu_item_two: // Build error here
// Do stuff
return true;
default:
return super.onOptionsItemSelected(item);
}
}
好的,如果我不能通过他们的ID引用它们,我该如何引用它们?
答案 0 :(得分:69)
用switch
构造替换if/else if
。
int id = item.getItemId();
if(id == R.id.menu_item_one) {
// ...
}
else if(id == R.id.menu_item_two) {
// ...
}
这是自ADT 14以来的必要条件,因为最终修饰符已从R类的id中删除。