我有一个包含 5 个片段的活动。我正在使用FragmentPageAdapter
支持库中的一个来实现刷卡。
Fragment4 需要在操作栏中添加一个额外的菜单项。只有当用户选择选项卡并且不滑动到它时,我才能正常工作。如果用户滑动到选项卡,附加菜单项不会一直显示。
本质上,当我滑动到 Fragment3 时,菜单项会显示(因为 Fragment4 的 onCreateView 被调用并存储到内存中),当我滑动到 Fragment4(打算拥有菜单项的那个)时它会保留,然后当我滑动到时再次消失Fragment5(它应该这样做)。但是,除非我向后滑动到 Fragment2 然后继续前进,否则它会一直消失。唯一的例外是,如果我在至少 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 选项卡,菜单会消失,并且在滑回 MyFragment 选项卡或任何其他选项卡时不会重新出现。关于onCreateOptionsMenu
状态的文档
“这只会调用一次,第一次显示选项菜单。要在每次显示时更新菜单,请参阅 onPrepareOptionsMenu(Menu)。” >
所以我尝试添加
public void onPrepareOptionsMenu(Menu menu){
setMenuVisibility(true);
}
但它根本没有效果。我显然在这里遗漏了一些东西......这应该可以
编辑:好的,所以我对 ActionBarSherlock 的研究越多,这种行为似乎只能使用该库。它似乎不是FragmentPagerAdapter
任何版本的 Android 的“本机”操作栏/行为的一部分。谁能帮我确认一下?