片段里面的菜单没有被调用

@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { Log.d("Does", "get called"); inflater.inflate(R.menu.menuitem, menu); super.onCreateOptionsMenu(menu, inflater); } 

下面是我的onCreateView方法,我正在调用

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { setHasOptionsMenu(true); return inflater.inflate(R.layout.layout1, container, false); } 

我没有得到日志语句或在我的操作栏中调用菜单。

更新 :我尝试从片段的onCreate方法调用它,但菜单未显示。

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

menu.xml文件

         

你需要调用setHasOptionsMenu(true); 来自Fragment的一个起始生命周期方法。 优选地来自onCreate(...)

在极简主义的情况下,Fragment的onCreate方法如下所示:

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

另外,调用super.onCreateOptionsMenu(menu, inflater); 在充气后,您的自定义菜单将重置您刚刚充气到空菜单的菜单。

所以要么致电:

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { Log.d("Does", "get called"); super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menuitem, menu); } 

要么:

 @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { Log.d("Does", "get called"); //no super call inflater.inflate(R.menu.menuitem, menu); } 

此外,如果您在Gingerbread设备上进行测试,如果托管Activity不包含自己的菜单项,则可能不会显示菜单。