2017-11-28 17 views
0

세 개의 조각 인 구성 요소를 새로 고쳐야하는보기 호출기가 있습니다. 지정된 아이가 이미 부모가 : 내가보기를 제거하고 새로운보기 는, 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

수 있습니다. 귀하의 조각 안에 viewPager.addOnPageChangeListener()을 에라. 그런 다음 Fragment/Activity의 newInstance를 작성하는 것이 필요합니다. 페이지가 변경 될 때마다 Fragment의 새 인스턴스를 만드는 작업을 수행 할 수 있습니다.