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; 
}