在我的FragmentActivity
我使用了几个片段。当配置更改(轮换)时,系统会破坏并重新创建每个片段。
我尝试使用这个重新创建的片段
mFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_frame);
并将其放入新布局
getSupportFragmentManager().beginTransaction()
.replace(R.id.fragment_frame, mFragment )
.commit();
但遇到奇怪的行为:丢失了几个片段。它们不会更多地显示在屏幕上。取而代之的是空的。
虽然日志显示片段被重新创建很好,但进一步显示片段被再次销毁,再次创建并再次销毁。
我构建测试项目以更清晰地显示问题并且没有外壳。
以及可证明的结果(没有足够的声誉插入图片)
Activity 启动图片
Activity 旋转图片
A,B,C,D 是一个fragments
正如您在配置更改后看到的那样,一些片段丢失了 (B,D)
告诉我我做错了什么
这是帮助的代码(编辑:将代码推送到 gitHub 以便更容易尝试)
https:// github.com/nailgilaziev/TestFragmentsRetain
p/s 抱歉链接
在我旋转设备后在这里记录猫
MainActivity: onPause Activity
MainActivity: onStop Activity
MainActivity: onDestroy Activity
A: onDestroyview
A: onDestroy
B: onDestroyview
B: onDestroy
C: onDestroyview
C: onDestroy
D: onDestroyview
D: onDestroy
MainActivity: onCreate Activity
A: onCreate
B: onCreate
C: onCreate
D: onCreate
MainActivity: replaced
MainActivity: onStart Activity
A: onCreateView
B: onCreateView
C: onCreateView
D: onCreateView
<--before this point all fine and then strange behavior began
for the lost fragments(B,D) are performed unnecessary calls-->
B: onDestroyview
B: onDestroy
D: onDestroyview
D: onDestroy
D: onCreate
D: onCreateView
MainActivity: onResume Activity