在任何時間,只能有一個FragmentManager
來控制 Fragment 的背景堆棧(back stack)。如果你的應用程式,同時在螢幕上顯示多個兄弟 Fragment,或是有使用子 Fragment,則必須指定一個FragmentManager
來處理應用程式的主要導航。
為了在一個 fragment transaction 中定義主要導航 Fragment,請調用setPrimaryNavigationFragment()
,來傳遞 Fragment 實例。以便這個實例的childFragmentManager
有主要控制權。
把導航結構視為一系列層級,Activity 作為這個結構的最外層,將每層的子 Fragment 包在裡面。每一層都必須有一個主要導航 Fragment。當發生返回事件,最內層控制導航行為。一但最內層不再有彈回的 fragment transaction,導航控制就會回到上一層。這個程序會一直重複,直到到達 Activity。
注意,當同時間顯示2個或以上數量的 Fragment,它們之中只有一個可以作為主要導航 Fragment。將 Fragment 設為主要導航 Fragment,會移除前一個 Fragment 的(導航)指定。
[註1] 兄弟(sibling) Fragment
sibling 這邊用兄弟而不是同級來解讀,是因為它們有一個重要特徵,都屬於同一個父級。
例如下圖的 I、J 節點都屬於父級 E;G、H 節點都屬於父級 C。
Nodes which belong to the same parent are called as siblings.
In other words, nodes with the same parent are sibling nodes.
參考資料