gpt4 book ai didi

android - 如何暂时隐藏工具栏菜单

转载 作者:搜寻专家 更新时间:2023-11-01 08:42:08 24 4
gpt4 key购买 nike

我有主机 Activity ,它可以有不同的 fragment ,它是某种 SingleFragmentActivity,因此用户可以在此 Activity 内的不同 fragment 之间导航,但在我的菜单中,我有将用户带到另一个 fragment 的按钮fragment,所以我需要在替换 fragment 时隐藏菜单,并在用户返回到上一个 fragment 时恢复菜单。
我试过清除菜单,它有效,但我怎样才能恢复菜单而不是以前的 fragment ?

在代码中这看起来像

   public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mToolbarProvider = (ToolbarProvider) activity;
// mToolbarProvider.saveCurrentMenu();
mToolbarProvider.getToolbar().getMenu().clear();

}
catch (ClassCastException ex) {
Log.e(getString(R.string.error_tag), "Activty has to implement " + ToolbarProvider.class.getSimpleName() + " interface");
}
}

这项工作,但是当我再次回到需要菜单的 fragment 时,我该如何恢复菜单,我试图保存菜单对象,但对我不起作用。

   @Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mActivityController = (ActivityController) activity;
mToolbarProvider = (ToolbarProvider) activity;
/* Menu lastMenu = mToolbarProvider.restoreLastMenu();
if(lastMenu!=null) {
activity.onCreateOptionsMenu(lastMenu);
}*/
Menu toolBarMenu = mToolbarProvider.restoreLastMenu();
if(toolBarMenu!=null) {
mToolbarProvider.getToolbar().inflateMenu(R.menu.menu_main);
}

} catch (ClassCastException ex) {
Log.e(getString(R.string.error_tag), "Activty has to implement " + ActivityController.class.getSimpleName() + " interface");
}
}

最好只是隐藏它并在我需要它时显示它。
请帮助实现这一点。

编辑

按照下面的建议,我尝试这样做,但第一次没有成功,但是我已经将逻辑移到了 onCreateView 中,我真的忘记了我在 中做所有事情onAttach,只调用一次。真是愚蠢的错误。

所以现在一切都很顺利。
这是代码。
在我需要隐藏菜单的 fragment 中的 onCreateView() 中。

  Menu menu = mToolbarProvider.getToolbar().getMenu();
MenuItem menuItem = menu.findItem(R.id.action_settings);
if(menuItem!=null) {
menuItem.setVisible(false);
mToolbarProvider.addHiddenItem(menuItem);
}

并且在所有菜单项都可见的主 fragment 中。

List<MenuItem> hiddenItemsList = mToolbarProvider.getAllHiddenItems();
if(hiddenItemsList!=null && hiddenItemsList.size()>0) {
int size = hiddenItemsList.size();
for(int i=0;i<size;i++) {
hiddenItemsList.get(i).setVisible(true);
}
}

或者您创建类似 setAllItemsVisible() 的方法

最佳答案

您可以尝试使用 menuItem.setVisible(false); 隐藏菜单项并再次显示它们 menuItem.setVisible(true);

关于android - 如何暂时隐藏工具栏菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578551/

24 4 0