Android之Fragment的優點和作用


版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/qq_34927117/article/details/68067040
一:什么是Fragment
碎片、片段。其目的是為了解決不同屏幕分辯率的動態和靈活UI設計。大屏幕如平板小屏幕如手機,平板電腦的設計使得其有更多的空間來放更多的UI組件,而多出來的空間存放UI使其會產生更多的交互,從而誕生了fragments。

  fragments 在活動Activity中為不同的屏幕尺寸修改布局配置(小屏幕可能每次顯示一個片段,而大屏幕則可以顯示兩個或更多)。

  Fragment必須被寫成可重用的模塊。因為fragment有自己的layout,自己進行事件響應,擁有自己的生命周期和行為,所以你可以在多個activity中包含同一個Fragment的不同實例。這對於讓你的界面在不同的屏幕尺寸下都能給用戶完美的體驗尤其重要。

 

二、Fragment優點
1.Fragment可以使你能夠將activity分離成多個可重用的組件,每個都有它自己的生命周期和UI。

2.Fragment可以輕松得創建動態靈活的UI設計,可以適應於不同的屏幕尺寸。從手機到平板電腦。

3.Fragment是一個獨立的模塊,緊緊地與activity綁定在一起。可以運行中動態地移除、加入、交換等。

4.Fragment提供一個新的方式讓你在不同的安卓設備上統一你的UI。

5.Fragment  切換流暢,輕量切換。

6.Fragment 替代TabActivity做導航,性能更好。

7.Fragment 在4.2.版本中新增嵌套fragment使用方法,能夠生成更好的界面效果。

Fragment做局部內容更新更方便,原來為了到達這一點要把多個布局放到一個activity里面,現在可以用多Fragment來代替,只有在需要的時候才加載Fragment,提高性能。

可以從startActivityForResult中接收到返回結果,但是View不能。

 

Fragment的生命周期

你可以把fragment看作是activity的模塊化組件,它擁有自己的生命周期

 

  Fragment是activity的界面中的一部分或一種行為。你可以把多個Fragment們組合到一個activity中來創建一個多面界面並且你可以在多個activity中重用一個Fragment。你可以把Fragment認為模塊化的一段activity,它具有自己的生命周期,接收它自己的事件,並可以在activity運行時被添加或刪除。

  Fragment不能獨立存在,它必須嵌入到activity中,而且Fragment的生命周期直接受所在的activity的影響。例如:當activity暫停時,它擁有的所有的Fragment們都暫停了,當activity銷毀時,它擁有的所有Fragment們都被銷毀。然而,當activity運行時(在onResume()之后,onPause()之前),你可以單獨地操作每個Fragment,比如添加或刪除它們。當你在執行上述針對Fragment的事務時,你可以將事務添加到一個棧中,這個棧被activity管理,棧中的每一條都是一個Fragment的一次事務。有了這個棧,就可以反向執行Fragment的事務,這樣就可以在Fragment級支持“返回”鍵(向后導航)。

 

顯示Fragment時(跟用戶交互)要調用的核心的生命周期方法如下:

1. 把Fragment對象跟Activity關聯時,調用onAttach(Activity)方法;

2. Fragment對象的初始創建時,調用onCreate(Bundle)方法;

3. onCreateView(LayoutInflater, ViewGroup, Bundle)方法用於創建和返回跟Fragment關聯的View對象;

4. onActivityCreate(Bundle)方法會告訴Fragment對象,它所依附的Activity對象已經完成了Activity.onCreate()方法的執行;

5. onStart()方法會讓Fragment對象顯示給用戶(在包含該Fragment對象的Activity被啟動后);

6. onResume()會讓Fragment對象跟用戶交互(在包含該Fragment對象的Activity被啟恢復后)。

 
---------------------
作者:Android潛行者
來源:CSDN
原文:https://blog.csdn.net/qq_34927117/article/details/68067040
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM