0

Я Populating вид пейджера через фрагменты любит этоУдалить или Очистить все фрагменты из ViewPager

pagerAdapter = new PagerAdapter(getSupportFragmentManager()); 
     mViewPager = (ViewPager) findViewById(R.id.container); 

     for (int i = 0; i < 10; i++) { 
      newfragment fragobj = new newfragment(); 
      fragobj.setArguments(bundle); 
      pagerAdapter.addFragment(fragobj, "Category"); 
     } 

      mViewPager.setAdapter(pagerAdapter); 
      mViewPager.setCurrentItem(page); 

Я хочу, чтобы очистить все фрагменты и добавлять новые фрагменты после очистки. Если я добавлю новые фрагменты, теперь они будут рекламироваться старыми фрагментами.

Я пробовал много ответов переполнения стека, но ни один из них не работал для меня.

ответ

0

mViewPager: это вид вы используете, чтобы установить вам фрагмент

mViewPager = (YourViewPager) findViewById(R.id.myPager); 

СТОЛ: это просто список Integer позиции всех моих фрагментов

public void destroyAllItem() { 
     int mPosition = mViewPager.getCurrentItem(); 
     int mPositionMax = mViewPager.getCurrentItem()+1; 
     if (TABLE.size() > 0 && mPosition < TABLE.size()) { 
      if (mPosition > 0) { 
       mPosition--; 
      } 

      for (int i = mPosition; i < mPositionMax; i++) { 
       try { 
        Object objectobject = this.instantiateItem(mViewPager, TABLE.get(i).intValue()); 
        if (objectobject != null) 
         destroyItem(mViewPager, TABLE.get(i).intValue(), objectobject); 
       } catch (Exception e) { 
        Log.i(TAG, "no more Fragment in FragmentPagerAdapter"); 
       } 
      } 
     } 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     super.destroyItem(container, position, object); 

     if (position <= getCount()) { 
      FragmentManager manager = ((Fragment) object).getFragmentManager(); 
      FragmentTransaction trans = manager.beginTransaction(); 
      trans.remove((Fragment) object); 
      trans.commit(); 
     } 
    } 
+0

Я не эксперт, так пожалуйста, вы можете сказать мне больше об этой переменной TABLE и как я могу его создать. –

+0

TABLE.size() - количество фрагментов в viewpager. Вы можете получить количество фрагментов из вашего адаптера viewpager. – ZeroOne

+0

Это не работает для меня. –

3

фрагмент был уже его удалят и уничтожены. проблема была в просмотре.

Только это работало для меня

myViewPager.setSaveFromParentEnabled(false); 

Ура!

+1

Работал и для меня! большое спасибо –

0

Добавить этот метод в ViewPagerAdapter и назовите его, если вы хотите, чтобы очистить фрагменты из ViewPager

public void clear() { 
    FragmentTransaction transaction = manager.beginTransaction(); 
    for (Fragment fragment : mFragmentList) { 
     transaction.remove(fragment); 
    } 
    mFragmentList.clear(); 
    transaction.commitAllowingStateLoss(); 
} 
Смежные вопросы