Fragment
-
Fragment結(jié)構(gòu)
- 活動布局中的FragmentLayout(布局)容器
- Fragment的子布局。
- Fragment類。
一般添加和替換碎片都是在FragmentLayout(布局)容器中。
靜態(tài)加載碎片時(shí)呢,一定要用V4包里的,避免出現(xiàn)Fragment加載錯(cuò)誤。
如果在同一次事務(wù)添加了多個(gè)Fragment呢,顯示的次序同添加次序一致。add()添加碎片后就默認(rèn)顯示,如一次向同一容器添加多個(gè)碎片了,就得hide()不顯示的Fragment。
一個(gè)事務(wù)對象呢,只支持一次提交。
調(diào)用FragmentManager.add()添加Fragment時(shí),可通過參數(shù)傳入此次行為的日志名。調(diào)用findFragmentByTag(),傳入日志名就能獲取添加的碎片。
hide()方法僅是隱藏視圖,detach()方法是銷毀視圖,最后通過show()方法都能顯示出來。
可調(diào)用FragmentManager對象的findFragmentById(),findFragmentByTag(),獲取到activity的返回棧中存在的Fragment。
-
Fragment 分別在app包和V4包都有,但兩者兼容的最低版本不同,app包里的最低兼容 android 3.o版本,V4包里的最低兼容 android 1.6版。一般使用V4包里的就好,相應(yīng)的創(chuàng)建FragmentManager對象時(shí),也就只能調(diào)用V4包里的方法創(chuàng)建了,getSupportFragmentManager()。
- 事務(wù)就是同一時(shí)刻呢執(zhí)行一組動作。
- 向activity中添加Fragment,都要取得一個(gè)FragmentTransaction的實(shí)例,其中就可以對Fragment進(jìn)行add,remove,replace。在調(diào)用commit()前,執(zhí)行了addToBackStack(),事務(wù)就會添加到返回棧中。當(dāng)用戶按下返回鍵時(shí)呢,事務(wù)的所以動作都會反向執(zhí)行(事務(wù)回溯)。
- 但如沒有執(zhí)行addToBackStack()呢,被刪除的Frgament就會被銷毀,而不是進(jìn)入停止?fàn)顟B(tài)。當(dāng)按下返回鍵時(shí)呢此Fragment不會被恢復(fù)。就是回到返回棧保存事務(wù)之前的狀態(tài)。
以下此圖是Fragment的完整生命周期。

碎片生命周期