我有一個活動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