我有一个活动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
来显示,而是FragmentB
显示。当我按下后退按钮一次,没有任何反应。当我再次按下它时,它将导航回FragmentA
。看起来好像FragmentC
出现在背面堆叠中,但由于某种原因它不可见。
为什么FragmentC
在这种情况下不可见?
旋转设备调用onCreateView为我的情况下的每个片段。即使调用了onCreateView,FragmentC也不会显示。 – catsfw