Android 在屏幕旋转上显示嵌套片段,而不显示父片段
旋转屏幕时,会显示我的嵌套片段,但在一些短暂的瞬间,也会显示父片段 我有一个主活动,它有一个ID为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,
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
(带有idFragmentF\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
之外,我几乎找不到任何好的理由来使用嵌套片段。自定义视图减少了这里的复杂性,并使生命周期更加可预测。是的。我意识到:)