Android 屏幕旋转后未显示碎片

Android 屏幕旋转后未显示碎片,android,android-fragments,screen-rotation,Android,Android Fragments,Screen Rotation,我有一个活动,ActivityA,还有3个片段,FragmentA,FragmentB,和FragmentC 要添加FragmentA,我使用replace,其中fragment是FragmentA的一个新实例: getSupportFragmentManager() .beginTransaction() .replace(R.id.frame_layout_fragment, fragment) .commit(); 在ActivityA的o

我有一个活动,
ActivityA
,还有3个片段,
FragmentA
FragmentB
,和
FragmentC

要添加FragmentA,我使用
replace
,其中
fragment
FragmentA
的一个新实例:

getSupportFragmentManager()
        .beginTransaction()
        .replace(R.id.frame_layout_fragment, fragment)
        .commit();
在ActivityA的
onCreate
方法中,我检查
FragmentA
创建:

if (savedInstanceState == null) {
    FragmentA fragmentA = FragmentA.newInstance();

    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.frame_layout_fragment, fragmentA)
            .commit();
}
要添加
FragmentB
FragmentC
,我使用
add
addToBackStack
,其中
fragment
FragmentB
FragmentC
的新实例:

getSupportFragmentManager()
        .beginTransaction()
        .add(R.id.frame_layout_fragment, fragment)
        .addToBackStack(null)
        .commit();
我在
FragmentC
上按后退按钮,显示
FragmentB
,在
FragmentB
上按后退按钮,显示
FragmentA
,如预期。当我在
FragmentC
上时,我旋转设备,
FragmentC
仍如预期的那样显示

但是,当我使用2次按下后退按钮从
FragmentC
导航到
FragmentA
时,然后旋转设备两次,纵向->横向->纵向,添加
FragmentB
,添加
FragmentC
,然后旋转设备一次,我希望
FragmentC
显示,而是
片段b
显示。当我按一下后退按钮时,什么也没发生。当我再次按下它时,它会导航回
FragmentA
。看起来
FragmentC
出现在后堆栈中,但由于某些原因,它不可见


为什么在这个场景中,
FragmentC
不可见?

我想另一个问题的答案也是你的答案:

它说:

添加和替换之间的另一个重要区别是:替换 删除现有片段并添加新片段。这意味着 您按下后退按钮,将创建被替换的片段 调用其onCreateView。而add保留了现有的 片段并添加一个新片段,这意味着现有片段将被删除 处于活动状态,因此当按下后退按钮时,它们不会处于“暂停”状态 不为现有片段调用pressed onCreateView( 添加新片段之前存在的片段)。依据 片段的生命周期事件onPause、onResume、onCreateView和其他 替换时将调用生命周期事件,但不会调用 在add的情况下调用


旋转设备会为我的案例中的每个片段调用onCreateView。即使调用了onCreateView,FragmentC也没有显示。有人解决了这个问题吗?