에 나는 조각을 제공하기 위해 내부 목록을 사용하는 사용자 지정 PagerFragmentAdapter
와 ViewPager
을 사용하고 있습니다. 나는 설정 변경시 조각을 동적으로 추가 및 제거하려고합니다.추가 및 제거 조각 동적 ViewPager
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter = new ServicePagerAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
나는 다시 setAdapter
전화를 시도했지만 나는 IllegalStateException (Can not perform this action after onSaveInstanceState)
을 구하십시오.
어떻게 내 목적을 달성 할 수 있습니까?
불행히도 그렇게 쉽지는 않습니다. FragmentPagerAdapter는 Fragments를 캐시합니다. 사용자 정의 PagerAdapter를 만들거나 트릭을 사용해야합니다. – Matroska
코드 샘플에서'ServicePagerAdapter'라고 언급합니다. 이것은 라이브러리 클래스가 아니므로 이미 사용자 정의 어댑터를 사용하고 있다고 가정했습니다. 그래서 네,'PagerAdapter' 클래스의 커스텀 구현이 필요합니다. 당신의 주된 질문에 관해서 - 나는 대답했다고 생각합니다. – HitOdessit
요소가 제거 된 경우 PagerAdapter에서 notifyDataSetChanged()를 호출하는 것으로는 충분하지 않습니다. PagerAdapter의 getItemPosition 메소드도 대체해야합니다. 요소가 아직 있으면 POSITION_UNCHANGED를 반환하고 제거 된 경우 POSITION_NONE을 반환합니다. –