我在操作栏中有一个带有多个标签的应用,每个标签都有一组不同的选项菜单图标显示在操作栏中。有些标签有两个图标,有些没有。
问题在于,当我在屏幕之间滑动时,各个屏幕的按钮可能会显示也可能不会显示。即在应该有两个图标的屏幕上,操作栏中没有图标!
但是,当我单击选项卡时,屏幕始终显示正确的图标。
我试过在调试器中分析问题。我确定FragmentPagerAdapter
正在为新选择的片段正确调用setMenuVisibility(true)
,并使用setMenuVisibility(false)
调用其他片段。
我无法找到按钮外观/消失的确切模式。我可以在两个屏幕之间向左/向右滑动,每个屏幕都有两个不同的按钮。在1到20次滑动之后,问题将发生在任何地方。
通过使用一个图标滑动到屏幕然后返回到带有两个图标的屏幕,消失似乎更加严重。
我尝试将调用添加到Activity.invalidateOptionsMenu()
但似乎没有任何影响。例如,我将此调用添加到我的TabAdapter的onPageScrollStateChanged()中,该调用在滑动动画完成后调用。我也尝试将它添加到Fragments的onResume()或TabAdapter.onTabSelected()完成之后,但无济于事。
我正在使用ActionBarSherlock 4.1.0(我在最新的android-support-v4.jar中替换了因为一个不同的问题)。我的活动扩展SherlockFragmentActivity
并简单地实例化ViewPager
。我已经覆盖了ViewPager适配器的FragmentPagerAdapter
(遵循ViewPager Android文档上的标准示例)。
我的手机正在运行Android 2.3.5。
答案 0 :(得分:6)
ViewPager / ActionBar, Menu Items not displaying中提供了针对此问题的几种解决方法。第8项中讨论的修复对我有用。
答案 1 :(得分:1)
请关注此link
if (viewPager.getCurrentItem() != position)
viewPager.setCurrentItem(position);
将调用推迟到onCreate
中的viewPager.setCurrentItempublic void onCreate(...) {
...
view.post(new Runnable() {
public void run() {
// guarded viewPager.setCurrentItem
}
}
}