I am working on a ViewPager
with a FragmentStatePagerAdapter
and I'm facing some troubles to dynamically add new fragments to my viewPager
/Adapter
.
I have an "add" button where I can press and, then, one new fragment is inserted between other two existing fragments.
E.g: Initial fragmentList:
{Fragment 1, Fragment 2}
After click "add" on Fragment 1:
{Fragment 1, New Fragment, Fragment 2}
If the picture doesn't load, here's its link
This is the method code called when the user press "+"
public void actionPerformed(int action, int pageNumber){
switch (action){
case 0:
Log.e("", "Add em " + pageNumber + 1);
mFragmentList.add((pageNumber + 1), MyFragment.newInstance("99"));
mPageAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem((pageNumber + 1));
currentPage = (pageNumber + 1);
pageTotal += 1;
updatePageCount();
break;
The problem is that I can't reach the recently added fragment without getting an error message.
This is my PagerAdapter Code:
private ArrayList<MyFragment> mFragmentList;
public MyPageAdapter(FragmentManager fm, ArrayList<MyFragment> fragments){
super(fm);
this.mFragmentList = fragments;
}
@Override
public int getItemPosition(Object object) {
int index = mFragmentList.indexOf(object);
if(index == -1){
return POSITION_NONE;
}else{
return index;
}
}
@Override
public Fragment getItem(int i) {
return mFragmentList.get(i);
}
@Override
public int getCount() {
return mFragmentList.size();
}
And finally, the code used to initialize the variables:
mViewPager = (ViewPager) findViewById(R.id.viewPager);
mViewPager.setOffscreenPageLimit(12);
mPageAdapter = new MyPageAdapter(getSupportFragmentManager(),mFragmentList);
mViewPager.setAdapter(mPageAdapter);