开关 - 大小写表达式必须是常量表达式

开关 - 大小写表达式必须是常量表达式

问题描述:

我使用ActionBarSherlock,然后onOptionsItemSelected开始一个新的活动,当一个特定的菜单项被点击。代码在添加ABS之前正常工作,现在我在case上得到case expressions must be constant expressions错误。开关 - 大小写表达式必须是常量表达式

@Override 
    public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) 
    { 
     switch (item.getItemId()) { 
     case R.id.about: //error 
      startActivity(new Intent(this, AboutActivity.class)); 
      break; 
     case R.id.feedback: //error 
      //launch activity 
      break; 

     default: 
      break; 
     return super.onOptionsItemSelected(item); 
    } 

在添加ActionBarSherlock之前,相同的代码正常工作。

+4

如果您在库中,则必须将所有开关/ case语句更改为来自ADT版本14的if/else块。请参阅:http://tools.android.com/tips/non-constant-fields – dmaxi 2013-02-13 16:44:00

+0

谢谢,它与if/else一起工作。 – domen 2013-02-13 16:46:48

+0

@dmaxi你应该发布这个答案,并得到它的信贷。 – Sam 2013-02-13 16:49:25

我用if/else取代switch/case声明。如果您在Eclipse中,只需点击switch,然后按CTRL+1即可。

+0

它的一个很好的答案...! – 2014-03-23 08:08:31

+0

哇!我不知道这个快捷方式 如果您知道我可以检查的任何其他快捷方式或网站,请让我知道。谢谢 – 2015-11-06 10:36:13

发布作为回答萨姆劝:

如果你是在一个库中,你必须改变所有的开关/ case语句来如果来自ADT版本/ else块14

参见:

tools.android.com/tips/non-constant-fields

开关盒缺少关闭“}”。

切换从switch/case声明if/for,只需使用ALT +的Android工作室进入