Android库项目中的菜单项ID?

Oll*_*e C 31 android intellij-idea

Android应用程序使用库项目来包含大部分应用程序代码,因为有两个版本的应用程序是从核心源构建的.自从IntelliJ IDEA更新(到v11),我在下面的每个案例陈述中收到此警告:

Resource IDs cannot be used in a switch statement in Android library modules
Run Code Online (Sandbox Code Playgroud)

这是代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

好的,如果我不能通过他们的ID引用它们,我该如何引用它们?

小智 69

switchif/else if构造代替.

int id = item.getItemId();
if(id == R.id.menu_item_one) {
    // ...
}
else if(id == R.id.menu_item_two) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这是自ADT 14以来的必要条件,因为最终修饰符已从R类中的id中删除.

请参见案例标签中的非常量字段