Android-主活动的设置菜单
我有一个在MainActivity中生成的设置菜单项。MainActivity的所有任务都是包含实际执行任务的片段。这些片段有自己的操作栏项,它们可以按预期工作 设置菜单项应显示/隐藏,具体取决于片段之间发生变化的特定条件,因此假设代码位于MainActivity上,则应为: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
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菜单足以让它像我期望的那样刷新。我希望不会遇到任何这样做还不够的情况