Android 在屏幕旋转上显示嵌套片段,而不显示父片段

Android 在屏幕旋转上显示嵌套片段,而不显示父片段,android,android-fragments,Android,Android Fragments,旋转屏幕时,会显示我的嵌套片段,但在一些短暂的瞬间,也会显示父片段 我有一个主活动,它有一个ID为activity\u base\u container的FrameLayout 当我的活动开始时,我会这样做: Fragment initialFragment = getInitialFragment(); mFragmentManager.beginTransaction() .add(R.id.activity_base_container, initialFragment,

旋转屏幕时,会显示我的嵌套片段,但在一些短暂的瞬间,也会显示父片段

我有一个主活动,它有一个ID为
activity\u base\u container的
FrameLayout

当我的活动开始时,我会这样做:

Fragment initialFragment = getInitialFragment();
mFragmentManager.beginTransaction()
        .add(R.id.activity_base_container, initialFragment, initialFragment.getClass().getSimpleName())
        .commit();
initialFragment
initialFragment负责检查某些条件,并根据这些条件启动两个可能的片段之一:

fragmentManager.beginTransaction().replace(R.id.activity_base_container, fragment, fragment.getClass().getSimpleName()).commit();
假设它启动了
FragmentF
(带有id
FragmentF\u root的根
FrameLayout
)。此碎片布局有一组选项。当用户单击其中一个选项时,将创建相应的片段并按如下方式启动:

//The example here is an option that displays a google map.
fragment = FragmentMapMultipleActivity.newInstance();
fragmentManager.beginTransaction()
      .replace(R.id.fragment_f_root, fragment)
      .addToBackStack(fragment.getClass().getSimpleName())
      .commit();
在这一点上,一切都在按预期进行。问题是当我旋转屏幕时<代码>片段f
短暂出现,然后立即出现嵌套片段
片段映射多活动性

旋转屏幕后是否可能只显示嵌套片段,或者我应该将“架构”更改为其他内容

是否应该将我的“架构”更改为其他内容

也许你应该这样做。
Square最聪明的安卓头脑甚至主张尽可能避免简单的碎片:

反过来,嵌套的碎片会以指数方式增加复杂性。到目前为止,我所看到的使用它们的唯一好模式是
ViewPager
,它是
FragmentPagerAdapter
。在大多数其他情况下,考虑改用自定义视图。
它使你的应用程序的生命周期更干净、更可预测

我不认为你可以通过这种眨眼来做很多事情,除了:

  • 并避免在活动中完全重新创建片段,所以在更改配置期间保留片段的数据(然后将相同的保留片段传递给片段管理器)
  • 尽可能保持布局的轻量级
  • 避免重新创建已初始化的变量
  • 使onViewCreate()尽可能轻量级

祝你好运

只是想一想:在
FragmentF
中,应该使用
getChildFragmentManager()
而不是“普通”的。另外,请确保确实要对嵌套片段执行
addToBackStack
。为了在横向视图上只显示嵌套片段,我将为横向视图创建一个特殊的布局,其中
R.id.fragment\u f\u root
占据整个屏幕(或者,在方向改变后将其展开)。不过,我不确定这是否符合你的要求question@KonstantinLoginov谢谢在
FragmentF
中,我正在使用
getChildFragmentManager()
。根据我的研究,我想我会改变我的实现,这样我就不会使用嵌套片段。依我的拙见,除了
ViewPager
之外,我几乎找不到任何好的理由来使用嵌套片段。自定义视图减少了这里的复杂性,并使生命周期更加可预测。是的。我意识到:)