gpt4 book ai didi

java - 如何在 fragment 中使用与 Activity 不同的菜单?

转载 作者:数据小太阳 更新时间:2023-10-29 02:33:59 26 4
gpt4 key购买 nike

我想要一个用于我的主要 Activity 的菜单和一个用于包含在主要 Activity 中的 fragment 的菜单。应删除主 Activity 菜单,并在 fragment 可见时扩充 fragment 菜单。我试图实现这一点,但这是结果:

主 Activity 菜单 fragment 本身:

enter image description here

显示 fragment 时的主 Activity 菜单 fragment :

enter image description here

很明显,尽管创建并扩充了 fragment 菜单,但我并没有替换主要 Activity 中的菜单。

这是负责此 Activity 的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// Depending on which fragment is used display different actions.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

这是 fragment 中负责此操作的代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
}

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

这是 friend_menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<item
android:icon="@drawable/ic_person_add_black_24dp"
android:id="@+id/nav_person_add"
android:title="Add people"
app:showAsAction="ifRoom" />

</menu>

如何获得我想要的菜单(没有搜索操作和 add_friend 操作)?我意识到从 Activity 中管理它可能更简单,并且只在显示 fragment 时才膨胀特定的 fragment 菜单,就像 Activity 中的评论说的那样://取决于使用哪个 fragment 显示不同的 Action 。

最佳答案

如果您想保持结构不变,您可以尝试clear() 菜单。

在你的 fragment

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear(); // Remove all existing items from the menu, leaving it empty as if it had just been created.
inflater.inflate(R.menu.friend_menu, menu);
}

关于java - 如何在 fragment 中使用与 Activity 不同的菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311208/

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