@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater){
Log.d("Does", "get called");
inflater.inflate(R.menu.menuItem, menu);
super.onCreateOptionsMenu(menu,inflater);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
getActivity().invalidateOptionsMenu();
MenuItem filter = menu.findItem(R.id.section);
filter.setVisible(false);
}
我试图以片段的形式加载我的菜单,但它被讨厌了,但是onPrepareOptionsMenu
根本没有被调用,我需要在其中隐藏一些菜单项。
更新:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
我在我的onCreate()
方法中调用setHasOptionsMenu(true)
。
发布于 2013-08-10 13:31:25
在Android3.0和更高版本上,当菜单项显示在操作栏中时,选项菜单被认为总是打开的。当事件发生并且您想要执行菜单更新时,必须调用invalidateOptionsMenu()来请求系统调用onPrepareOptionsMenu()。
http://developer.android.com/guide/topics/ui/menus.html
要更改特定项,请使用:menu.findItem(R.id.your_item_id)
发布于 2016-08-22 15:13:51
你需要做两件事。步骤1:在片段OnCreateView中添加setHasOptionsMenu(true);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
setHasOptionsMenu(true);
return inflater.inflate(R.layout.fragment_user_settings, container, false);
}
步骤2:您需要在OnViewCreated的片段中添加getActivity().invalidateOptionsMenu();。或者在更改片段时在mainActivity中。
发布于 2015-06-25 16:41:43
可能太晚了,但我也遇到了同样的问题,解决方案也很简单。只需从片段中调用getActivity().invalidateOptionsMenu()即可。这将调用Hope,在这里你可以像这样控制你的项目的可见性: menu.findItem(R.id.youritem).setVisible(true/false);onPrepareOptionsMenu这是有帮助的!
https://stackoverflow.com/questions/15656953
复制相似问题