2013-03-19 92 views
1

我使用的ActionBarSherlock庫和片段。但是,在第二個片段出現後,我很難讓菜單顯示在屏幕上。 這是一個非常簡單的程序,一個屏幕接着另一個屏幕。我使用FragmentTransaction,每次都替換。我在每個片段中使用setHasOptionsMenu(true)。 的onCreateOptionsMenu & onPrepareOptionsMenu越來越調用,但我有一個空白區裏的菜單。我可以選擇該區域,它似乎工作,但沒有文字。 任何想法? 片段代碼:片段,ActionBarSherlock和菜單

public class MyListFragment extends SherlockListFragment { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 
    @Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     if (menu.findItem(R.id.save) == null) { 
      menu.clear(); 
      inflater.inflate(R.menu.new_menu, menu); 
     } 
    } 

活動:

public class MyMain extends SherlockFragmentActivity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     supportFragmentManager = getSupportFragmentManager(); 
     handler = new Handler(); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
} 

片段代碼

fragmentEntries.push(stackEntry); 
FragmentTransaction ft = mFragmentManager.beginTransaction(); 
ft.replace(contentId, fragment, fragmentName); 
ft.commit(); 
+1

你能爲活動和片段張貼代碼? – 2013-03-19 19:34:58

+0

要添加的片段,我簡單地使用:\t \t fragmentEntries.push(stackEntry); \t \t FragmentTransaction英尺= mFragmentManager.beginTransaction(); \t \t ft.replace(contentId,fragment,fragmentName); \t \t ft.commit();該活動只是一個SherlockFragmentActivity該片段放'setHasOptionsMenu(true);'在onCreate – kevindavmoore 2013-03-21 21:38:05

回答

0

onCreateOptionsMenu只能得到每documentation調用一次..

系統調用後的onCreate OptionsMenu(),它保留你填充的菜單的一個實例,不會再次調用onCreateOptionsMenu(),除非菜單由於某種原因失效。但是,您應該只使用onCreateOptionsMenu()來創建初始菜單狀態,而不是在活動生命週期中進行更改。

如果要修改基於活動的生命週期期間發生的事件的選項菜單中,您可以在onPrepareOptionsMenu()方法做到這一點。該方法將當前存在的Menu對象傳遞給您,以便您可以對其進行修改,例如添加,刪除或禁用項目。 (片段還提供onPrepareOptionsMenu()回調)。

+0

我正在做這一切。當我調試並查看菜單時,它包含我所有的項目,但不顯示。我注意到,當我調試時,我的菜單會顯示,直到我調用menuItem.setVisible(true),然後消失。 – kevindavmoore 2013-03-19 23:26:49

+0

上面介紹的代碼中的代碼在哪裏?您可以添加關於菜單/操作欄的_anything_嗎? – 2013-03-24 19:26:01

0

看起來這只是一個愚蠢的錯誤。我有一個菜單帶有一個圖標(這是一個選擇器),似乎掩蓋了文本。 我的測試也失敗了,因爲我正在使用具有相同ID的項目的菜單。