我有一个包含5个片段的活动。我正在使用支持库中的FragmentPageAdapter
来实现滑动。
Fragment4需要在操作栏中添加一个额外的菜单项。只有当用户选择选项卡并且不滑动它时,我才能正常工作。如果用户滑动到选项卡,则附加菜单项不会一直显示。
基本上,当我滑动到Fragment3时,菜单项将显示(因为Fragment4的onCreateView被调用并存储到内存中),当我滑动到Fragment4(想要有菜单项的那个)时它会停留,然后当它再次消失时我刷到Fragment5(应该这样做)。然而,除非我将所有背面滑动到Fragment2然后继续前进,否则它会一直消失。唯一的例外是,如果我至少有两个片段并选择选项卡,那么它将正确显示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选项卡,菜单将消失,并且在向后滑动MyFragment选项卡或任何其他选项卡时不会再次出现。有关onCreateOptionsMenu
州
“仅在第一次显示选项菜单时调用此选项。要在每次显示菜单时更新菜单,请参阅onPrepareOptionsMenu(菜单)。” >
所以我尝试添加
public void onPrepareOptionsMenu(Menu menu){
setMenuVisibility(true);
}
但它根本没有效果。我显然在这里遗漏了一些东西......这应该有用
编辑:
好的,所以我对ActionBarSherlock的了解越多,这种行为似乎越多,只能使用该库。对于任何版本的Android,它似乎都不属于“原生”操作栏/ FragmentPagerAdapter
行为的一部分。任何人都可以为我确认一下吗?
答案 0 :(得分:2)
我遇到了与您相同的问题,菜单图标确实显示在选项卡上,但没有显示在滑动上。这个解决方案对我有用:
Click 见johanols评论。
你的另一个问题对我来说很奇怪。为什么不加载所有5个片段?
mViewPager.setOffscreenPageLimit(5);
希望有所帮助:)