2013-02-13 98 views
3

我使用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

回答

15

我用if/else取代switch/case聲明。如果您在Eclipse中,只需點擊switch,然後按CTRL+1即可。

+0

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

+0

哇!我不知道這個快捷方式 如果您知道我可以檢查的任何其他快捷方式或網站,請讓我知道。謝謝 – 2015-11-06 10:36:13

1

切換從switch/case聲明if/for,只需使用ALT +的Android工作室進入