0

早上好! 我在嘗試正確顯示操作欄上的選項菜單時遇到了一些麻煩。 這就是我所擁有的: 主要活動從ActionBarActivity擴展而來。我已經宣佈了3個片段:A,B和C. 在B中,我聲明瞭兩個片段B1和B2。 B2從SUpporMapFragment擴展而來。選擇的B片段導航是TAB_NAVIGATION。 A和C都有Standar導航。實施操作欄上的選項菜單的問題

B2片段:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    inflater.inflate(R.menu.menu, menu); 
} 

的問題是,在菜單出現在A和C的片段時,它應該發生。在片段A和C上我有下一個:

@Override 
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(false);  
} 

行爲是下一個。當我運行我的應用程序時,A和C片段具有可見的選項菜單。當我去B時,如果我在B1並回到A或C,菜單消失。如果我轉到B2並返回到A或C,則會顯示菜單。我已經debbuged它,當我在B2片段後單擊A或C片段時,片段A或C從B2片段調用onCreateOptionsMenu。任何幫助都會很棒!

+0

調用'setHasOptionMenu'當片段是用戶,即'onUserVisible'活動的方法可見。 –

+0

@twntee它沒有工作。永遠不要輸入該方法,並從C2片段繼續輸入onCreateOptionsMenu方法 – n4h1n

回答

0

使用控制變量求解。我叫onCreateOptionsMenu在我的主要活動:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    if (posicionFragmento==1 && Listado_tiendas_mapas_fragment.seleccionFragmentoMenu){ 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
    }  
    return true; 
}