Android库项目中的菜单项ID?

时间:2011-12-12 15:47:01

标签: android intellij-idea

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引用它们,我该如何引用它们?

1 个答案:

答案 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中删除。

请参阅Non-constant Fields in Case Labels