我希望有一个主Activity菜单和一个包含在主Activity中的片段菜单。当片段可见时,主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;
}
下面是代码片段中负责此操作的代码:
@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>
我如何获得我想要的菜单(不使用search操作,使用add_friend操作)?我意识到,从Activity中管理这个操作可能更简单,并且只在显示片段时膨胀特定的片段菜单,就像Activity中的注解所说的那样:// Depending on which fragment is used display different actions.
2条答案
按热度按时间stszievb1#
如果你想保持这样的结构,你可以尝试
clear()
菜单。在您的
Fragment
中ztigrdn82#
对我有效的方法
在你的
onCreateView
中在您的
onCreateOptionsMenu
中