iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0
Mobile Development

[Android] 在 activity 與 fragment 身上的 lifecycle系列 第 10

[Day 10] Fragment 的實作 - Fragment manager / 子 Fragment 與兄弟 Fragment 的留意事項

  • 分享至 

  • xImage
  •  

子 Fragment 與兄弟 Fragment [註1] 的留意事項

在任何時間,只能有一個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.
https://ithelp.ithome.com.tw/upload/images/20220916/20151956sIdi0xwPib.png


參考資料


上一篇
[Day 09] Fragment 的實作 - Fragment manager / 使用方式
下一篇
[Day 11] Activity 的 lifecycle - 用來界定使用者進入、離開 Activity 的行為模式
系列文
[Android] 在 activity 與 fragment 身上的 lifecycle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言