子ViewPagerを含むViewPagerを持つ親Fragment Activityがあります。子 ViewPager には、各ページのフラグメントが含まれています。コールバック インターフェイスを使用して、これらの子ページ フラグメントと最上位の親フラグメント アクティビティの間で通信します。
public interface Callbacks {
public void onItemSelected(Link link);
}
onItemSelected
親 Fragment Activity で、イベントをリッスンします。
@Override
public void onItemSelected(Link link) {
Bundle argumentsFront = new Bundle();
argumentsFront.putParcelable(FragmentComments.ARG_ITEM_ID, link);
fragmentComments = new FragmentComments();
fragmentComments.setArguments(argumentsFront);
getSupportFragmentManager().beginTransaction().replace(R.id.post_container, fragmentComments).commitAllowingStateLoss();
}
これで、アプリが最初に起動されたときに正常に動作します。
デバイスを回転させて向きを変えると、アクティビティが再起動します。すべてのフラグメントは、使用時に再初期化されますsetRetainInstance(true);
(サポートされていないため、子 ViewPager のページ Fragments で setRetainInstance(true) を呼び出しません)。ただし、子 ViewPager の Fragment でリスト項目をクリックすると、次の例外が発生します。
FATAL EXCEPTION: main
java.lang.IllegalStateException: Activity has been destroyed
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:578)
なぜこれが起こるのか誰か知っていますか?
ありがとう