2013-06-05 23 views
1

我正在Sherlock ActionBar上工作,並在右上角使用選項按鈕,靠近搜索圖標。我成功地爲SEARCH按鈕生成onClick事件,但我在Button選項的onClick事件中遇到了問題。 使用下面的代碼添加按鈕:如何在Android的Sherlock ActionBar中獲取Option菜單按鈕的OnClick事件?

public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
     menu.add(0, 1, 1, "Search").setIcon(R.drawable.search_icon).setActionView(R.layout.action_search).setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 
     menu.add(0, 2, 2, "Button").setIcon(R.drawable.menu_overflow_icon).setActionView(R.layout.action_button).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
return super.onCreateOptionsMenu(menu); 
    } 

而且click事件:

@Override 
    public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) { 
     switch (item.getItemId()) { 
     case 1: 
      search = (EditText) item.getActionView(); 
      search.addTextChangedListener(filterTextWatcher); 
      search.requestFocus(); 
      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
    break; 
     case 2: 
      Toast.makeText(ActivityScreen.this, "hit it", Toast.LENGTH_SHORT).show(); 


     } 
     return super.onOptionsItemSelected(item); 
    }  

我已經表明我的下面安裝在圖像的要求。 enter image description here

+0

您究竟遇到什麼問題? – FWeigl

+0

@Ascorbin:onclick的選項我沒有得到onclick事件。 –

+0

你錯過了'case 2'的'break'聲明:'。 – kabuto178

回答

2

替換你的break;語句在Switch的onOptionsItemSelected爲時返回true;

加成答案

final static int BUTTON_ID = 2; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    MenuItem item = menu.add(Menu.NONE, BUTTON_ID, Menu.NONE, R.string.action_option_name); 
    item.setIcon(R.drawable.action_option); 
    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    return true; 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch(item.getItemId()) 
    { 
    case BUTTON_ID: 
     Toast.makeText(this, "clicked on 2", Toast.LENGTH_SHORT).show(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

注:我還沒有添加MenuItem.setActionView(R.layout.action_search)。我試圖在https://stackoverflow.com/a/11292843/1567588處使用解決方案。但它不工作。我已將GroupId和OrderId設置爲Menu.None

+0

問題是,我沒有收到選項按鈕單擊事件。我用返回true替換了break,但仍然沒有收到選項按鈕的事件。 –

+0

需要的任何答案?? –

+0

等一下,我正在嘗試重新創建您的問題。 – SKK

相關問題