问题描述
笔者最近的Android项目要用到PagerSlidingTabStrip和ViewPager的组合,但是从github上下载源码后顺利运行示例项目,用到自己的项目后发现一个问题,就是第二次进入该ViewPager所在Fragment后PagerSlidingTabStrip载入正常,但是ViewPager不显示内容,为一片空白。于是追踪代码,发现ViewPager的子Fragment的onCreatView方法未被调用,于是怀疑在替ViewPager设置Adapter的环节出了问题。
以下是我第一次的Adapter代码
public class MyPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = { "外卖订单", "快递订单" };
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
return OrderListFragment.newInstance(position);
}
}
经过各种搜索后发现继承的Adapter不对,将FragmentPagerAdapter改为FragmentStatePagerAdapter后第二次进入就能正常加载Fragment内容了。
之后的代码
public class MyPagerAdapter extends FragmentStatePagerAdapter {
private final String[] TITLES = { "外卖订单", "快递订单" };
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
return OrderListFragment.newInstance(position);
}
}
笔者也是第一次用ViewPager,对于机制什么的也不太熟悉,希望能帮到也出现这个问题的人。