片段里面的菜单没有被调用
@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
不包含自己的菜单项,则可能不会显示菜单。