我有一个有5个片段的活动。我正在使用
FragmentPageAdapter
从支持库中选择,以实现滑动。
Fragment4需要在操作栏中添加一个额外的菜单项。只有当用户选择选项卡并且不滑动到它时,我才能正常工作。如果用户滑动到选项卡,则不会一直显示附加菜单项。
从本质上讲,当我滑动到Fragment3时,菜单项将显示(因为Fragment4的onCreateView被调用并存储在内存中),当我滚动到Fragment4时(该菜单项旨在拥有该菜单项),它会停留,然后当我滑动至Fragment5时再次消失(它应该这样做)。然而,除非我把所有的东西都向后滑动到碎片2,然后继续前进,否则它会一直消失。唯一的例外是,如果我至少离开2个片段并选择选项卡,那么它将正确显示Fragment4的菜单项。
此外,如果它显示了Fragment3中的菜单项,因为它在执行时调用了onCreate,为什么它在滑动到Fragment5时会消失?据我所知,FragmentPageAdapter一次“加载”了3个片段,以启用平滑滑动功能。。
请参阅下面的代码。
public View onCreateView(){
..
setHasOptionsMenu(true);
..
return view;
}
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
SubMenu sub = menu.addSubMenu("Options");
sub.add(0, EMAIL, 0, "Email");
sub.add(0, FILTER, 0, "Filter");
sub.add(0, SAVE, 0, "Save");
sub.getItem().setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
setMenuVisibility(true);
}
如果我加上
setMenuVisibility(true)
到
onActivityCreated
菜单将显示上一个片段何时出现,因为从技术上讲
MyFragment.onActivityCreated
被调用,因此显示正确选项卡和上一个选项卡的菜单。但是,如果我滑过MyFragment选项卡,则菜单将消失,并且在向后滑动MyFraction选项卡或任何其他选项卡时不会重新出现
onCreateOptionsMenu
州
“这只在第一次显示选项菜单时调用一次。要在每次显示菜单时更新菜单,请参阅onPrepareOptionsMenu(菜单)。”>
所以我试着添加
public void onPrepareOptionsMenu(Menu menu){
setMenuVisibility(true);
}
但它根本没有效果。我显然错过了什么。。。这应该有效
编辑:
好吧,所以我对ActionBarSherlock研究得越多,这种行为似乎就越只能使用该库。它似乎不是“本机”操作栏的一部分/
FragmentPagerAdapter
任何版本的Android的行为。有人能帮我确认一下吗?