【问题标题】:Remove Action Button From Action Bar从操作栏中删除操作按钮
【发布时间】:2014-07-18 15:02:07
【问题描述】:

我已经使用 Fragment 实现了 ActionBar Navigation。在我的应用程序中,我有一个活动,其余部分在片段中。在我的 MainActivity 中,我正在实现这样的菜单。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

两个 Fragment 使用 Navigation Drawer,在它们受人尊敬的 Fragment 中,我正在膨胀菜单按钮来对项目进行排序。

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.sort_button_shops, menu);
    }

现在的问题是,如果我打开 Fragment 1,它可以完美运行。当我打开片段 2 时,它显示 2 个按钮进行排序,一个来自片段 1,第二个来自片段 2。

我试图隐藏按钮,但没有成功。 任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 我在 Activity 的声明部分制作了一些 MenuItems(我想隐藏/显示的按钮)。我在 onCreateOptionsMenu 中分配它们。然后,在代码中,我使用myItem.setVisible(true|false);。很简单。
  • 我已经试过了,还是不行。我很惊讶为什么在片段 2 中显示片段 1 中添加的菜单。因为每个片段都有自己的菜单。
  • 我知道这有点旧,但请看我的回答。

标签: android android-fragments android-actionbar android-navigation


【解决方案1】:

当您扩充新菜单时,您正在向旧的 Menu 对象添加新项目,这可能不是您想要的。

试试这个:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.removeItem(R.id.your_menu_item);
    getMenuInflater().inflate(R.menu.main, menu);
return true;
}

【讨论】:

    【解决方案2】:

    尝试在片段的 onResume() 中使用它。

    MenuItem item = (MenuItem) findViewById(R.menu.activity_main);
    item.setVisible(false);
    this.invalidateOptionsMenu();
    

    【讨论】:

    • this.invalidateOptionsMenu();它需要 Api 11,我也需要 Api 10。
    • 尝试将 supportInvalidateOptionsMenu() 用于 api 级别
    猜你喜欢
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多