android 活动菜单,在工具栏上显示活动和片段的不同菜单选项

Android Studio 1.4

我有一个工具栏,我在我的activity_main.xml膨胀。 我有一个名为main.xml的菜单,它被充气,只有一个图标可以显示在它上面。

当用户单击以打开片段时。 我有另一个菜单friends.xml ,有2个图标。

当我在片段中给朋友菜单充气时,它仍会显示main.xml菜单中的图标。

我认为在工具栏上膨胀新菜单会删除现有菜单。

这是main.xml菜单的屏幕截图。 将显示查找图标

KdZGf.png

这是片段的屏幕截图,因为您可以看到查找图标仍然存在。

DiPPJ.png 包含工具栏的activity_main.xml

这是我在MainActivity.java中创建菜单的代码

private void setupToolBar() { mToolbar = (Toolbar)findViewById(R.id.tbMain); setSupportActionBar(mToolbar); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); }

在我的片段中我有这个,你可以看到我正在膨胀friends.xml菜单。

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

非常感谢任何建议,

我不确定你是否可以使用onCreateOptionsMenu()来做到这一点。 我认为你最好的选择是onPrepareOptionsMenu() 。

您可以通过在Fragment的onResume()编写getActivity().invalidateOptionsMenu()来强制Android刷新选项菜单。

所以你的onPrepareOptionsMenu()将如下所示:

@Override public void onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); menu.clear(); //remove all items getActivity().getMenuInflater().inflate(R.menu.menu_fragment, menu); }

将menu引用存储在variables中。

private Menu menu; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); this.menu = menu; return super.onCreateOptionsMenu(menu); }

当替换提到的片段时,请执行以下操作。

private void hideOption(int id) { menu.findItem(id).setVisible(false); }

使用菜单ID调用hideOption() 。 对于前者,

hideOption(R.id.action_search);

反过来显示。或遵循#Droidwala的建议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值