gpt4 book ai didi

android - fragment 和 Activity 中的 Tooblar MenuItem 可见性问题

转载 作者:行者123 更新时间:2023-11-29 01:25:26 27 4
gpt4 key购买 nike

我正在使用 Appcompat 工具栏,它有一个 MenuItem,在 Activity 中带有自定义操作 View 。当我切换到 fragment 时,我有单独的工具栏,我不希望 Activity MenuItem 在 fragment 中显示,因此我将它的可见性设置为 false。

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {

MenuItem menuItem = menu.findItem(R.id.action_notification);
menuItem.setVisible(false);
super.onCreateOptionsMenu(menu, inflater);
}

到目前为止一切正常。

但是当我返回 Activity 时,相同的 MenuItem 不可见。这是我如何让它再次可见。 onCreateOptionsMenu 被调用,因为我正在使 onResume() 中的菜单无效,但 MenuItem 不可见。

@Override
public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.dashboard_actionbar_actions, menu);
MenuItem menuItem = (MenuItem) menu.findItem(R.id.action_notification);
menuItem.setVisible(true).setEnabled(true);
return super.onCreateOptionsMenu(menu);
}

我是不是漏掉了什么?

最佳答案

您必须在 fragment 中设置不同的菜单:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// TODO Add your menu entries here
super.onCreateOptionsMenu(menu, inflater);
}

如果您想在 fragment 中隐藏菜单,只需使用 setHasOptionsMenu(false):

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(false);
}

当您说切换到 fragment 时,您是在同一个 Activity 上切换 fragment 吗?如果是这样,最好的方法是从 Activity 中删除菜单代码并在 Fragment 中实现它,以便您可以在 Fragment 级别控制菜单。

关于android - fragment 和 Activity 中的 Tooblar MenuItem 可见性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34362273/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com