2011-12-12 89 views
30

Android应用程序使用库项目来包含大部分应用程序代码,因为从核心源构建的应用程序有两个版本。由于一个IntelliJ IDEA的更新(V11)我得到这个警告以下各个case语句:Android库项目中的菜单项ID?

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

我想一个解决办法是动态创建的菜单项,但消除使用资源为菜单的所有优点。这些错误似乎是说在库项目中不能使用XML菜单定义? –

回答

68

替代switchif/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

+0

非常感谢Alex。 –