Android 如何临时隐藏工具栏菜单
我有一个主机活动,它可以有不同的片段,它是某种Android 如何临时隐藏工具栏菜单,android,android-fragments,android-actionbar,toolbar,Android,Android Fragments,Android Actionbar,Toolbar,我有一个主机活动,它可以有不同的片段,它是某种单片段活动,因此用户在这个活动中的不同片段之间导航,但在我的菜单中,我有一个按钮,可以将用户带到另一个片段,所以我需要在片段被替换时隐藏菜单,并在用户返回到上一个片段时恢复菜单。 我已经尝试过清除菜单,它是有效的,但我如何才能恢复菜单比以前的片段 在代码中,这看起来像 public void onAttach(Activity activity) { super.onAttach(activity); try {
单片段活动
,因此用户在这个活动中的不同片段之间导航,但在我的菜单中,我有一个按钮,可以将用户带到另一个片段,所以我需要在片段被替换时隐藏菜单,并在用户返回到上一个片段时恢复菜单。我已经尝试过清除菜单,它是有效的,但我如何才能恢复菜单比以前的片段 在代码中,这看起来像
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");
}
}
这是可行的,但当我再次回到需要菜单的片段时,如何恢复菜单,我已经尝试保存菜单对象,但对我无效
@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
中做的所有事情,只调用了一次。真是愚蠢的错误
所以现在一切都像一个符咒一样运行。这是代码。
在我需要隐藏菜单的片段中的
onCreateView()
Menu menu = mToolbarProvider.getToolbar().getMenu();
MenuItem menuItem = menu.findItem(R.id.action_settings);
if(menuItem!=null) {
menuItem.setVisible(false);
mToolbarProvider.addHiddenItem(menuItem);
}
在主片段中,所有菜单项都可见
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);
}
}
List hiddenItemsList=mToolbarProvider.getAllHiddenItems();
if(hiddenItemsList!=null&&hiddenItemsList.size()>0){
int size=hiddenItemsList.size();
对于(int i=0;i您可以尝试使用menuItem.setVisible(false);
隐藏菜单项并再次显示menuItem.setVisible(true);
您可以尝试使用menuItem.setVisible(false);
隐藏菜单项并再次显示menuItem.setVisible(true);
很好!!请将您的评论作为答案发布!!