Some of our users (around 2%) are getting an error that I cannot reproduce on any physical and virtual device:
The line where this error corresponds is the last one of this piece of code:
List<Fragment> fragments = new ArrayList<>();
fragments.add(Fragment1.newInstance(data1));
fragments.add(Fragment2.newInstance(data2));
fragments.add(Fragment3.newInstance(data3));
fragments.add(Fragment1.newInstance(data1));
fragments.add(Fragment2.newInstance(data2));
fragments.add(Fragment3.newInstance(data3));
CustomInfinitePagerAdapter mAdapter = new CustomInfinitePagerAdapter(getChildFragmentManager(), fragments);
mPager.setAdapter(mAdapter); //<-- Here is where our users have the crash
mPager
is a ViewPager
. I am replicating fragment 1 to 3 because the infinite view pager cannot have less than 4 fragment and I need to have 3. The CustomInfinitePagerAdapter
is:
public class CustomInfinitePagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> mFrags = new ArrayList<Fragment>();
public CustomInfinitePagerAdapter(FragmentManager fm, List<Fragment> frags) {
super(fm);
mFrags = frags;
}
@Override
public Fragment getItem(int position) {
if (mFrags == null || mFrags.size() == 0)
return null;
while (position < 0)
position += mFrags.size();
int index = position % mFrags.size();
return mFrags.get(index);
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
}
Any idea?