2013-05-04 91 views
0

我是一個noob android開發,我有一個問題,使菜單項偵聽器的工作。 當我點擊菜單項目吐司應該顯示,但沒有任何反應。我有正確的導入,並已實現菜單項偵聽器,所以我不明白爲什麼它不工作。任何幫助是極大的讚賞。爲什麼ActionBarSherlock菜單不起作用?

//ABS MenuItem import 
import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    menu.add(0,1,0,"Gender").setIcon(R.drawable.female_icon).setOnMenuItemClickListener(this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    menu.add(0,2,0,"Flip").setIcon(R.drawable.flip_icon).setOnMenuItemClickListener(this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    menu.add(0,3,0,"Preferences").setIcon(R.drawable.ic_action_example).setOnMenuItemClickListener(RemedyActivity.this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    menu.add(0,4,0,"Help").setIcon(R.drawable.info).setOnMenuItemClickListener(RemedyActivity.this).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 


    //Side Navigation 
    getSupportMenuInflater().inflate(R.menu.main_menu, menu); 
    if (sideNavigationView.getMode() == Mode.RIGHT) { 
     menu.findItem(R.id.mode_right).setChecked(true); 
    } else { 
     menu.findItem(R.id.mode_left).setChecked(true); 
    } 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onMenuItemClick(MenuItem item) { 
    // TODO Auto-generated method stub 
    switch (item.getItemId()) 
    { 
     case 1: 
      Toast mToast = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT); 
      return true; 

     case 2: 
      Toast mToast2 = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT); 
      return true; 
    } 
    return false; 
} 

編輯

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      sideNavigationView.toggleMenu(); 
      break; 
     case R.id.mode_left: 
      item.setChecked(true); 
      sideNavigationView.setMode(Mode.LEFT); 
      break; 
     case R.id.mode_right: 
      item.setChecked(true); 
      sideNavigationView.setMode(Mode.RIGHT); 
      break; 
     case 1: // id from the xml file 
      Toast mToast = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT); 
      break; // we handled the click, dont pass it up the chain 

     case 2: // id from the xml file 
      Toast mToast2 = Toast.makeText(RemedyActivity.this, "works", Toast.LENGTH_SHORT); 
      break; 

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

回答

1

我注意到,你正在嘗試顯示一個敬酒,而使用側導航。我曾經有過一些問題想要在這個圖書館中表達一番敬意。嘗試另一種方法來確定按鈕是否實際上正在工作,如NSLog。

0

嘗試重寫

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      ... 
     } 
    } 

,而不是onMenuItemClick

+0

感謝您的迴應,但此解決方案也無法正常工作。 – 2013-05-04 17:34:49

+0

你是否設置了'return super.onOptionsItemSelected(item);'最後? – Neoh 2013-05-04 17:42:18

+0

是的,我做到了。這成爲一個惱人的問題。請檢查我的編輯。 – 2013-05-04 17:44:10

0

return super.onCreateOptionsMenu(menu);可能是你的問題。根據docs,「您必須返回true才能顯示菜單;如果您返回false,則不會顯示。」

如果super.onCreateOptionsMenu總是返回false(它可能會),那麼你的菜單將不會顯示。

此外,你創建了烤麪包,但你不顯示它。您需要明確呼叫show()。目前的eclipse插件應該給你一個警告。

相關問題