我有一个父片段活动,它有一个包含子 ViewPager 的 ViewPager。子 ViewPager 包含每个页面的片段。我使用回调接口在这些子页面片段和顶级父片段活动之间进行通信,例如
public interface Callbacks {
public void onItemSelected(Link link);
}
在父片段活动中,我监听onItemSelected
事件,例如
@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();
}
现在,当应用程序首次启动时,这可以正常工作。
如果您转动设备以更改方向,则 Activity 会重新启动。所有片段都会在我使用时重新初始化setRetainInstance(true);
(我不在子 ViewPager 的页面片段中调用 setRetainInstance(true),因为它不受支持)。但是,如果我单击子 ViewPager 的片段中的列表项,则会收到此异常:
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)
有谁知道为什么会这样?
谢谢