iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Mobile Development

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

[Day 08] Fragment 的實作 - Fragment manager / 子 Fragment 與父級的互動

  • 分享至 

  • xImage
  •  

你可以將每個 host 看作它持有與子 Fragment有關聯的FragmentManager。圖1說明了這一點,以及在supportFragmentManagerparentFragmentManagerchildFragmentManager的屬性對應(property mappings)關係。

https://ithelp.ithome.com.tw/upload/images/20220914/20151956zBES4cRqKW.png
[圖1] 每個 host 持有與子 Fragment 有關聯的FragmentManager

引用適合的FragmentManager屬性(property),取決於在哪個 Fragment 層級中調用,以及你想要存取哪個FragmentManager

當你引用了FragmentManager,你可以透過它來操作要顯示給使用者的 Fragment。

子 Fragment

一般而言,你的應用程式應該會由一個或少數的 Activity 組成,每個 Activity 呈現一組相關畫面。這個 Activity 可能會提供入口點[註1]來放置頂層(top-level)導航、定義ViewModels和 Fragment 之間的視圖狀態(view-state)。應用程式中每個個別目的地(destination)都應該由一個 Fragment 呈現。


[註1]
還記得在 Day 01 提及的 Activity 定義嗎?
Activity 是作為應用程式與使用者互動的入口點。


如果你想要同時顯示多個 Fragment,像是分割視圖(split-view)或儀表版(dashboard),你應該使用目的地(destination) Fragment 和它的childFragmentManager來管理子 Fragment。

子 Fragment 使用範例如下:

  • 使用ViewPager2的滑動畫面(Screen slides),在一個父級 Fragment 管理一系列子 Fragment 視圖。
  • 一組相關畫面的子導航(Sub-navigation)。
  • Jetpack Navigation 使用子 Fragment 作為個別目的地。當使用者使用應用程式導航列,一個 Activity 持有一個父級NavHostFragment,並使用不同目的地子 Fragment 來填充。

參考資料


上一篇
[Day 07] Fragment 的實作 - 初探 Fragment manager (Jetpack Navigation 的底層)
下一篇
[Day 09] Fragment 的實作 - Fragment manager / 使用方式
系列文
[Android] 在 activity 與 fragment 身上的 lifecycle30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言