Android-主活动的设置菜单

Android-主活动的设置菜单,android,android-fragments,menu,Android,Android Fragments,Menu,我有一个在MainActivity中生成的设置菜单项。MainActivity的所有任务都是包含实际执行任务的片段。这些片段有自己的操作栏项,它们可以按预期工作 设置菜单项应显示/隐藏,具体取决于片段之间发生变化的特定条件,因此假设代码位于MainActivity上,则应为: if (condition) menu.findItem(R.id.action_settings).setVisible(false); else menu.findItem(R.id.action_set

我有一个在MainActivity中生成的设置菜单项。MainActivity的所有任务都是包含实际执行任务的片段。这些片段有自己的操作栏项,它们可以按预期工作

设置菜单项应显示/隐藏,具体取决于片段之间发生变化的特定条件,因此假设代码位于MainActivity上,则应为:

if (condition) menu.findItem(R.id.action_settings).setVisible(false);       
else menu.findItem(R.id.action_settings).setVisible(true);

现在我想知道我应该把代码放在哪里,因为片段之间的条件会发生变化,但实际的菜单项在MainActivity上。

我想这对你来说是可行的

public boolean onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened, hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}

您的情况可能还可以,您可以将其放入活动的OnPrepareOptions功能表中。 正如您所说,当您进入活动时,只会调用一次,但有一些例外

在片段之间切换时,需要强制系统调用PrepareOptions菜单上的活动,这可以在任何地方通过行InvalidateOptions菜单或getActivity.InvalidateOptions菜单(如有必要)来完成

粘贴它的最佳点可能是恢复时的片段,或者您认为您的条件状态已更改的任何其他点


根据您的库的不同,还有一种支持APIcan的方法,您可以发布代码以更好地理解!!我甚至不知道片段可以有菜单项:O无论如何,你应该为片段实现监听器,它们可以用来传递信息。显然,onPrepareOptions菜单足以让它像我期望的那样刷新。我希望不会遇到任何这样做还不够的情况