示例问题的示例代码在此处:
https://github.com/Beeder/TestTabPager
(格式更好的问题,请参阅我的github项目TestTabPager
自述文件)
从Android Studio 0.8.6导出
我是Android编程新手,最近我使用导航drawerand viewpageindicator,但我被困在这里。
选择item0,正确显示带有三个标签的item0片段,选择item1,完成后再次选择item0,显示三个标签的item0片段,但仅显示三个标签,相应的内部片段为走了!更奇怪的是,当我在这三个标签之间滑动时,TAB0和TAB2的内部碎片再次显示,但是TAB1的内部碎片从未显示过!为什么?
以下是详细信息: 根据本教程(www.tutecentral.com/android-custom-navigation-drawer/),我创建了一个这样的导航抽屉活动:
raw.githubusercontent.com/Beeder/MyStorage/master/Image/TestTabPager/Screenshot_2014-10-06-17-25-59.png
(抱歉,我没有超过10个声誉,您可以将网址粘贴到浏览器并查看图片。)
为了演示,只添加了两个抽屉物品。当选择项目0时,这里是item0片段(在我的项目中命名为NewsFragment):
raw.githubusercontent.com/Beeder/MyStorage/master/Image/TestTabPager/Screenshot_2014-10-06-17-26-14.png
在NewsFragment中,我使用JakeWharton的Android-ViewPagerIndicator(github.com/JakeWharton/Android-ViewPagerIndicator),更具体地说是TabPageIndicator。 有三个选项卡,选择一个选项卡,显示相应的TabFragment(x)。
选择抽屉item1时,显示:
raw.githubusercontent.com/Beeder/MyStorage/master/Image/TestTabPager/Screenshot_2014-10-06-17-26-24.png
但是,当我再次选择抽屉item0 时,除了三个标签外,一切都消失了!这意味着没有显示TabFragment(x)的TextView。为什么?
更奇怪,在这三个标签之间滑动后,TAB0和TAB2的内部片段(TextView)再次显示,但是TAB1的内部片段从未显示过!为什么?那是因为TAB1在中间吗?
我尝试了很多方法来解决这个问题,在NewsFragment中,我覆盖onStop()
和onViewStateRestored()
以获取最后一个选定的标签,但tabPageIndicator.setCurrentItem(selectedItem);
似乎没有真正触发{ {1}}方法,不会再次创建所选标签的内部片段!
Fragment getItem(int position)
我想这与没有保存InstanceState有关,但我不知道还能做什么,我已经挣扎了两天,如果你能帮助我,我会很感激。
再次感谢。
答案 0 :(得分:0)
FragmentPagerAdapter
是主要问题。用FragmentPagerAdapter
替换FragmentStatePagerAdapter
并跟踪所有活动的内部片段后,我已经解决了我的问题。
非常感谢this answer。
如果您能阅读中文,this blog可能会帮助您更好地理解。
有关详细信息,请随时查看我的项目README!