이 오래된 질문이지만, 어쨌든 여기가 사람을 도움이 될 것입니다 희망에 대한 몇 가지 정보를 제공합니다.
ViewPager는 ViewPager # setAdapter()를 통해 설정된 어댑터와 함께 작동합니다. 이 질문의 경우 FragmentPagerAdapter가 어댑터로 사용 된 것 같습니다 (이 어댑터는 예외에 나타나는대로 android : switcher : [x] : [y] 조각에 이름을 지정하기 때문에). FragmentPagerAdapter에 대한
한 가지 중요한 관찰은 이것이다 :
FragmentPagerAdapter은 ViewPager에서 사용되는 할당 조각을 소유하고있다.
public abstract Fragment getItem(int position);
이 기능 페이지로 ViewPager에서 사용하는 다른 단편을 만들고 다음과 같이
ViewPagerAdapter의 연계와 ViewPager의 사용자는 프로토 타입, FragmentPagerAdapter는 준 getItem() 메소드를 구현하는 서브 클래스를 정의하는 . 이 메소드의 구현은 프래그먼트를 할당하기 위해 FragmentPagerAdapter()에 서브 클래스가 제공하는 서비스로 간주되어야합니다.
즉, 하위 클래스는 조각을 할당하지만 그것은 소유자가 아닙니다.
위와 같이 프래그먼트의 소유자가 FragmentPagerAdapter이므로 모든 조각 작업 (FragmentManager/FragmentTransaction의 의미에서)은 FragmentPagerAdapter에 의해서만 수행되어야합니다.
이러한 조각에 대한 작업을 시도하면 ViewPager의 정상적인 작동을 방해하고 정의되지 않은 동작이 발생할 수 있습니다.
이 질문의 경우 FragmentPagerAdapter 외부의 ViewPager에서 사용되는 조각 중 하나를 제거하려고 시도했습니다. 설명 된대로이 예외로 끝난 시퀀스가 잘못되었을 수 있습니다.
ViewPager에서 페이지를 동적으로 제거/추가/바꾸기 위해 어댑터에서 notifyDataSetChanged()를 호출하는 방법.
행운을 빈다.
[Android : 하나의 조각을 다른 조각으로 바꿀 수 없음] (http://stackoverflow.com/questions/5907673/android-cant-replace-one-fragment-with-another) – bernie
예외 추적이 도움이 될 것입니다. . ViewPager.setCurrentItem (int)에서도 같은 일이 일어나고 있습니다. –
ViewPager에서 단편을 제거하면 무엇을 의미합니까? ViewPager는 Fragment의 수명을 관리합니다.어댑터의 메소드를 사용하여 listview에서 제거하는 것과 같은 것을 제거해야합니다. 좀 더 명확히 해 주시겠습니까? –