Skip to content Skip to sidebar Skip to footer

Cannot Remove Fragment From Viewpager, Why?

I must be missing something but I cannot remove a fragment from my ViewPager. I store the page titles in an ArrayList: Part of ViewPagerActivity.java (which is a FragmentActivity,

Solution 1:

I had the same problem, the only solution I found was to set the adapter again after removing the fragment like this :

@OverridepublicvoidonClick(View v) {
    ViewPagerActivity.mEntries.remove(4);
    pager.setAdapter(mPagerAdapter);
    }

UPDATE : YOU DON'T NEED TO SET THE ADAPTER AGAIN. Here some methods of my PagerAdapter, you need probably to do some modifications to use it as FragmentPagerAdapter

To remove views :

publicstaticvoiddeleteChildren(int pStart) {

    List<ViewInfo> viewToRemove = new ArrayList<ViewInfo>();

    for (int iView = pStart+1; iView < _views.size(); iView++) {
        viewToRemove.add(_views.get(iView));
    }

    if (viewToRemove.size() != 0) {
        _views.removeAll(viewToRemove);
    }
}

@Override
publicvoiddestroyItem(View pView, int pIndex, Object pObject) {
        ((ViewPager) pView).removeView((View)pObject);
}

Override getItemPosition(Object pObject) :

    @Override
public int getItemPosition(Object pObject) {
    intpos = 0;
    for (ViewInfo iView : _views) {
        if (iView.mView == (View)pObject) {

            break;
        }
        pos++;
    }
    returnpos;
}

Refresh all views :

publicstaticvoidrefreshAdapterViewPager() {
    _pagerAdapter.notifyDataSetChanged();

}

Solution 2:

The problem is the FragmentStatePagerAdapter, which reclaims the gone-from-view fragments. Even if you create a new one. Try using the FragmentPagerAdapter instead, which makes a fresh start on instantiating it.

Post a Comment for "Cannot Remove Fragment From Viewpager, Why?"