我有一个带有5个标签的viewpager . 在viewpager的每个片段中,我有一个listview,其中填充了我从服务器获取的数据(服务器调用是使用AsyncTask完成的) .
我也使用Fragmentstatepageradapter来实现最流畅的导航,但是当我从具有listview的片段导航到另一个具有listview的片段时,似乎有些东西不能正常工作 .
我想知道为什么,因为数据已经存储,我希望viewpager从堆栈弹出这些片段 .
这是我的适配器:
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index){
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
case 3:
return new Fragment4();
case 4:
return new Fragment5();
}
return null;
}
@Override
public int getCount() {
return 5;
}
}
经过一番研究后,我仍然无法顺利存储/恢复状态 . 我已经尝试使用 myViewPager.setOffscreenPageLimit(4);
,它提供了更好的性能,但标签导航仍然有点滞后 .
Do I have to override instantiateItem/destroyItem in order to save fragment states?
1 回答
问题由 changing the layout_height param of the ListView from wrap_content to match_parent. 解决
如果设置为wrap_content的高度,将调用适配器内的getView方法多次,这就是选项卡之间导航速度慢的原因 .
我希望这会有所帮助,回答发现here .