天天看點

Fragment基礎知識整理

 今天主要為大家講解一下Fragment,因為每一個項目中都會用到Fragment,還記得自己在幾年前用過TabActivity來實作導航切換,那陣根本就不知道Fragment,當知道Fragment時,Tabactivity就可以被OUT了;

   如果哪裡有不足的地方,還希望大神寶寶們多多提點:
Fragment基礎知識整理

什麼是Fragment?

  Fragment 碎片的意思。它在一個activity裡面表示一個行為或者使用者接口的一部分,它是輕量級和靈活的,

我們可以将不同的Fragments組合起來放到一個activity中,或者在不同的activity中重用一個Fragment,你可以看成它是activity中的一個

片段,有着自己的生命周期,并且可以再activity運作是動态的添加和删除。

   Fragment的生命周期

Fragment基礎知識整理

Fragment的生命周期方法主要有onAttach().onCreate(),onCreateView()onActivityCreated(); onStart(),onResume(),onPause(),onStop(),onDestoryView(),onDestory(),onDetach()等11個方法

1.切換該Fragment,分别執行onAttach()onCreateView()onCreate(),onActivityCreated() onstart()onRsume() 2.鎖屏:分别執行onPause()onStop() 3.亮屏:分别執行onStart()onResume() 4,覆寫切換到其他Fragment,分别執行onPause(),onstop(),ondestoryView() 5,從其他Fragment回到之前Fragment,分别執行onCreateView(),onActivityCreated(),onStart(), onResume()方法

Fragment常用的API

Fragment常用的三個類 Android.app.Fragment 主要用于定義Fragment android.app.FragmentMananger 主要用于在activity中操作Fragment android.app.FragmentTransaction 保證一系列Fragment操作的原子性,熟悉事務的都應該明白

Fragment基礎知識整理

Fragment使用時常用的方法

add(): 向activity中添加一個Fragment

remove();從activity中移除一個Fragment,如果被移除的Fragment沒有被添加到回退棧

replace();使用另一個Fragment代替目前的

hide();隐藏目前的Fragment,僅僅是設為不可見,并不會銷毀

show();顯示之前隐藏的Fragment

detach(); 會将view從UI中移除,此時Fragment的狀态依然由FragmentMananger維護

attch(); 重建View視圖,附加到UI上并顯示

Fragment在你們項目中的使用

Fragment是android3.0以後引入的概念,做局部内容更新更友善,原來為了達到這一點要求把多個布局放到activity裡面,現在可以用多個Fragment來代替,隻有在需要的時候才加載Fragment,提高性能 1,Fragment 可以使你能夠将activity分離成多個重用的元件,每個都有他自己的生命周期和ui; 2.Fragment 可以輕松建立動态靈活的UI設計,可以适用于不同的螢幕尺寸,從手機到平闆電腦 3.fragment是一個獨立子產品,緊緊的與activty綁定在一起,可以運作中動态的移除,加入,交換等。 4,fragment提供一個新的方式讓你在不同的android裝置上統你的UI. 5.fragment解決activity切換不流暢,輕量切換 6.fragment代替TabActivity做導航,性能好 7.fragemt 在4.2版本中新增嵌套fragment使用方法,能夠生成更好的界面效果

如何切換fragement,不重新執行個體化

翻看了android官方文檔,和一些元件的源代碼,發現repalce()這個方法隻是在一個Fragment不再需要時采用的簡單方法 正确的切換方式是add(),切換是hide(),add()另一個Fragment;再次切換時;隻需要hide()目前,show()另一個, 這樣就能做到多個Fragment切換不重新執行個體化;

Fragment的replace 和 add方法的差別

Fragment 本身沒有replace 和add方法,FragmentManager才有replace和add方法。我們經常使用的一個架構就是通過RadioGroup切換Fragment,每個Fragment就是一個功能子產品, Fragment 的容器一個FrameLayout,add的時候是把所有的Fragment一層一層的疊加到了FrameLayout上了,而replace的話首先将該容器中的其他Fragment去除掉然後将目前的Fragment添加到容器上, 一個Fragment容器中隻能添加一個Fragment種類,如果多次添加則會報異常,導緻程式終止,而Replace則我無所謂,随便切換,因為通過add的方法添加的Fragment,每個Fragment隻能添加一次,一次如果要想達到切換效果需要通過Fragment的hide和show方法結合使用,将要顯示的show出來,講其他hide起來,這個過程的fragment的生命周期沒有變化, 通過replace切換Fragment,每次都會執行上一個Fragment的onDestroyView,新Fragment的onCreateView,onStart, onResume方法,基于以上不同的特點我們在使用的一定要結合這生命周期操作我們的視圖和資料

Fragment優點

Fragment可以使你能夠将activity分離成多個可重用的元件

Fragment可以輕松的建立動态靈活的UI設計,

Fragment是一個獨立的子產品,緊緊的與activity綁定在一起。

Fragment提供一個新的方式讓你在不同的andoid裝置上同一你的UI

Fragment解決activity之間的切換不流暢,輕量切換

Fragment代替TabActivity做導航,性能好

Fragment做局部内容更新更友善

今天Fragment我總結就這麼多;希望能夠對大家有所幫助,

IT的世界,大神們都在前面跑,你還有什麼理由走那,

F

繼續閱讀