1. 程式人生 > >Android開發中,Fragment巢狀Fragments遇到的問題

Android開發中,Fragment巢狀Fragments遇到的問題

Fragment,簡稱碎片,是Android 3.0(API11)提出的,為了相容低版本,support-v4庫中也開發了一套Fragment API,最低相容Android 1.6。

  • Fragment是依賴於Activity的,不能獨立存在的。
  • 一個Activity裡可以有多個Fragment。
  • 一個Fragment可以被多個Activity重用。
  • Fragment有自己的生命週期,並能接收輸入事件。
  • 我們能在Activity執行時動態地新增或刪除Fragment。

工作過程中,Fragment的使用也大大提高了我們的效率,通過Activity

巢狀多個Fragment可以很容易的實現大多數app主介面的搭建。通常的做法都是通過getSupportFragmentManager()來獲取Fragment的管理者物件FragmentManager來進行Fragment的新增和移除的一些操作。
在這裡插入圖片描述
但有時候也會有一些特殊的需求,比如上圖中所示:主介面由Activity巢狀Fragment搭建,在子Fragment中又嵌套了兩個子Fragment。這就需要我們做一些特殊的處理了。當然你可以使用getSupportFragmentManager()來繼續管理子Fragment裡的Fragment碎片,但是會出現頁面衝突的現象,這種是顯然不允許的。這時候就要引入getChildFragmentManager()
物件了,顧名思義就是子級管理者物件。使用getChildFragmentManager()來管理Fragment才能達到我們想要的效果。這是因為第一級的Fragment巢狀在宿主ActivitygetFragmentManager()返回的是Activity的管理者物件,在Fragment中再巢狀FragmentgetFragmentManager()返回的是把自己加進來的管理者物件,也就是Activity的管理者物件,這顯然是不對的。它需要的是本級的管理者物件,這就需要使用getChildFragmentManager()來進行管理了。
希望可以幫到你們。