2013-04-18 37 views
1

我在SherlockFragmentActivity中的onOptionsItemSelected()有問題。 onCreateOptionsMenu()被調用,選項菜單完美地構建,但是當我點擊一個選項時,onOptionsItemSelected()不被調用。Android:onOptionsItemSelected()在SherlockActivity中調用,但不在SherlockFragmentActivity

我試圖用SherlockActivity測試項目相同下面的代碼,有它的工作原理:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

    menu.add(0, 1, 0, "hi").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT); 
    menu.add(0, 1, 0, "ha").setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER | MenuItem.SHOW_AS_ACTION_NEVER); 

    return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     if (item.getItemId() == 1) { 
      // Do someting! 

     } 
     return true; 
    } 

在這兩種情況下,以下進口完成:

import com.actionbarsherlock.app.ActionBar; 
    import com.actionbarsherlock.view.Menu; 
    import com.actionbarsherlock.view.MenuItem; 

有誰知道幫助?謝謝!

+0

您是否在您的最小測試項目中嘗試過使用'SherlockFragmentActivity'?我在多次使用'SherlockFragmentActivity'的活動中使用過'onOptionsItemSelected()',從來沒有遇到過麻煩。 –

+0

感謝您的幫助,我現在試過了,它可以與SherlockFragmentActivity一起使用,但仍只能在最小的測試項目中使用。你有什麼想法可以影響我的大型項目嗎?片段是否起作用(他們沒有任何選項菜單)? – user1956123

+0

對不起,不知道。如果我正在解決這個問題,我可能會慢慢地推倒我的殘破的活動,或者慢慢地積累我的工作活動,直到我找到它破裂的地步。然後你可以弄清楚如何解決。 –

回答

1

我認爲這是因爲你沒有設置MenuItemClickListener(你在代碼中創建項目)。 但是如果你define menu from xml Android會設置監聽器並點擊onOptionsItemSelected。

+0

感謝您的回答!我現在嘗試從XML中定義它,但它仍然不起作用。 – user1956123

1

謝謝!現在我複製了這個項目並重建了我的SherlockFragmentActivity並發現了問題。我的類已經包含公共布爾onMenuItemSelected(int featureId,MenuItem項),這將被調用,而不是onOptionsItemSelected。我需要這個,因爲操作欄左上角的後退按鈕。

相關問題