これは古い質問ですが、とにかく、ここでいくつかの情報は、それが誰かを助けることを期待しています。
ViewPagerは、ViewPager#setAdapter()を介して設定されているアダプタとともに動作します。 この質問の場合は、FragmentPagerAdapterがアダプターとして使用されているようです(このアダプターは、例外に表示されるようにandroid:switcher:[x]:[y]というフラグメントに名前を付けるので)。 FragmentPagerAdapterについて
一つの重要な観察はこれです:
FragmentPagerAdapterはViewPagerで使用されている割り当てられた断片を所有しています。
はViewPagerAdapterの組み合わせとViewPagerのユーザは次のようにプロトタイプのgetItem()メソッドを実装FragmentPagerAdapterのサブクラスを定義しなければならない:
public abstract Fragment getItem(int position);
この関数は、ページとしてViewPagerによって使用される異なるフラグメントを作成します。 このメソッドの実装は、サブクラスがFragmentPagerAdapter()に提供するサービスとして、フラグメントを割り当てるために見える必要があります。
つまり、サブクラスはフラグメントを割り当てますが、フラグメントはその所有者ではありません。
上記のように、フラグメントの所有者はFragmentPagerAdapterであるため、すべてのフラグメント操作(FragmentManager/FragmentTransactionの意味で)はFragmentPagerAdapterによってのみ行われる必要があります。
これらのフラグメントに対して操作を実行しようとすると、ViewPagerの通常の操作が妨げられ、未定義の動作が発生する可能性があります。
この質問の場合、FragmentPagerAdapterの外でViewPagerで使用されているフラグメントの1つを削除しようとしました。このフラグメントは、説明したようにこの例外で終了したシーケンスをトリガーしました。
ViewPagerのページを動的に削除/追加/置換する必要がある場合、アダプターのnotifyDataSetChanged()を呼び出す方法があります。
幸運を祈る!
[Android:1つのフラグメントを別のフラグメントに置き換えることはできません](http://stackoverflow.com/questions/5907673/android-cant-replace-one-fragment-with-another) – bernie
例外トレースが役立ちます。 ViewPager.setCurrentItem(int)でも同じことが起こっています。 –
ViewPagerからフラグメントを削除することはどういう意味ですか? ViewPagerはFragmentのライフを管理します。あなたは、アダプタのメソッドを使用して、リストビューで削除するようなものを削除する必要があります。あなたは明確にしていただけますか? –