2017-11-28 13 views
0

私は3つのフラグメントであるコンポーネントを更新する必要があるビューページャを持っています。指定された子は、すでに親を持っている: は、私は、ビューを削除し、新しいビューに setadapterメソッドを追加することViewPagerフラグメントをリフレッシュする

java.lang.IllegalStateExceptionスローします。子の親で最初にremoveView()を呼び出す必要があります。

私は

viewPager.removeAllViews(); 
viewPager.setAdapter(new SampleFragmentPagerAdapter(getChildFragmentManager())); 

アダプタのコードを新しいアダプタを設定する前に、ポケットベルからすべてのビューを削除しますが

public class SampleFragmentPagerAdapter extends FragmentStatePagerAdapter { 
final int PAGE_COUNT = 3; 
SettingRTL settingRTL = new SettingRTL(); 
private String tabTitles[] = new String[]{"News", "Articles", "Reports"}; 
private String tabTitlesA[] = new String[]{"الأخبار", "المقالات", "التقارير"}; 

public SampleFragmentPagerAdapter(FragmentManager fm) { 
    super(fm); 
} 

@Override 
public int getCount() { 
    return PAGE_COUNT; 
} 

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      return PromosFragment.newInstance(0, "Page # 1"); 
     case 1: 
      return ArticlesFragment.newInstance(1, "Page # 2"); 
     case 2: 
      return OtherFragment.newInstance(2, "Page # 3"); 
     default: 
      return null; 
    } 
} 

@Override 
public CharSequence getPageTitle(int position) { 
    if (settingRTL.getCurrentLang().equals("العربية")) { 
     return tabTitlesA[position]; 
    } 
    return tabTitles[position]; 
} 

答えて

0

を次のように、あなたのSampleFragmentPagerAdapterでオーバーライドする必要があるためである。

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

まだ同じエラー –

0

ovあなたのフラグメント内にviewPager.addOnPageChangeListener()を挿入してください。 を作成し、フラグメント/アクティビティのnewInstanceを作成する必要があります。ページが変更されるたびに、Fragmentの新しいインスタンスを作成する操作を実行できます。

関連する問題