Android - 主要活动的“设置”菜单

时间:2015-01-03 11:24:15

标签: android android-fragments menu

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

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

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

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

2 个答案:

答案 0 :(得分:0)

我认为这对你有用

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);
}

答案 1 :(得分:0)

您的状况可能正常,您可以将其放入您的活动onPrepareOptionsMenu()。 正如你所说,当你输入Activity时,只有一次被调用(有一些例外)。

您需要强制系统在切换片段时调用活动onPrepareOptionsMenu(),并在任何地方完成 - 使用行invalidateOptionsMenu()(或者,如果需要,getActivity().invalidateOptionsMenu() )。

粘贴它的好处可能是碎片onResume(),或者您认为您的状况状态已发生变化的任何其他点。

根据您的库,还有API< 11的支持方法supportInvalidateOptionsMenu()

每次要更改菜单时都应调用此选项。但是,如果您的片段只是添加某些项目到基础活动菜单,请查看this