我在一个viewpager中有三个片段。
其中两个片段都有自己的onCreateOptionsMenu方法:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
// Set up 1 action button
inflater.inflate(R.menu.home_snapshot_add, menu);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
// Set up 2 action buttons
inflater.inflate(R.menu.home_snapshot_send, menu);
}
主页活动有一个基本的onCreateOptionsMenu方法:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return false;
}
在onCreate方法中,每个片段都调用该方法:setHasOptionsMenu(true);
每个菜单项都有一个标签:
android:showAsAction="always"
似乎当我打开这个Activity时,所有三个按钮都会出现。但是,当我滑动它们时,错误的按钮会神奇地消失。感觉这个Activity在创建时调用了每个Fragment的选项菜单,然后在左右滑动时适当更改了菜单。我已经检查了菜单,但不确定问题出在哪里。你认为我需要检查什么?我的想法有点不足。谢谢!
getChildFragmentManager()
迭代子片段并应用相同的逻辑,然后调用invalidateOptionsMenu()
。 - Nikola Despotoski