今天在使用ViewPager与Fragment的时候,出现了indexoutofboundexception
后来才知道ViewPager会自动缓存1页内的数据,如果你滑动过快,有时候快速的切换自动清除所有的Fragment,使你装载Fragment的ArrayList为空,所以出现了indexoutofboundexception
//这是我装载Fragment的ArrayList
private ArrayList<Fragment> fragments = new ArrayList<Fragment>();
//创建4个Fragment,添加到ArrayList里去
int count = 4;
for (int i = 0; i < count ; i++) {
Bundle data = new Bundle();
data.putString("text", name);
NewsFragment fragment = new NewsFragment();
fragment.setArguments(data);
fragments.add(fragment);
}
得到NewsFragmentPagerAdapter实例,
NewsFragmentPagerAdapter mAdapetr = new NewsFragmentPagerAdapter(getSupportFragmentManager(), fragments);
mViewPager.setOffscreenPageLimit(count );//在setAdapter之前调用,这行代码:设置预加载这么多个Fragment。然后就不会自动清除ArrayList中的Fragment
mViewPager.setAdapter(mAdapetr);
mViewPager.setOnPageChangeListener(pageListener);