Android 碎片(Fragment)
碎片是活動的一部分,是的活動更加的模塊化設計。我們可以任務碎片是一種子活動。
下面是關於碎片的重要知識點 -
- 碎片擁有自己的布局,自己的行為及自己的生命周期回調。
- 當活動在運行的時候,你可以在活動中添加或者移除碎片。
- 你可以合並多個碎片在一個單一的活動中來構建多欄的UI。
- 碎片可以被用在多個活動中。
- 碎片的生命周期和它的宿主活動緊密關聯。這意味著活動被暫停,所有活動中的碎片被停止。
- 碎片可以實現行為而沒有用戶界面組件。
- 碎片是 Android API 版本11中被加入到 Android API。
通過繼承 Fragment 類來創建碎片。可以通過使用 元素在活動的布局文件中聲明碎片來在你的活動中插入碎片。
在引入碎片之前,由於每次給定的一個時間點在屏幕上只能顯示單一的活動,因此我們有一個局限。我們無法分割設備屏幕並且獨立的控制不同的部分。伴隨著碎片的引入,我們獲得了更大的靈活性,並使得一個時間點只能在屏幕上有一個單一活動的限制被移除。現在我們可以有單一的活動,但每個活動由多個碎片組裝,每個碎片有自己的布局,事件和完整的生命周期。
下面是一個典型的示例演示如何讓兩個由碎片定義的UI模塊,在為平板設計的活動中組合,在為手持設備設計的活動中分離。
當運行在在平板尺寸的設備上,這個應用程序可以在活動A中嵌入兩個碎片。在手機設備屏幕上,由於沒有足夠的空間,活動A僅包含有文章列表的碎片,當用戶點擊文章時,啟動包含第二個碎片的活動B來閱讀文章。
碎片的生命周期
Android 的碎片擁有自己的生命周期,與 Android 的活動很相似。下面簡單介紹它生命周期的不同階段。
這是在類fragment中你可以重寫的方法列表:
- onAttach(): 碎片實例被關聯到活動實例。碎片和活動還沒有完全初始化。通常,你在該方法中獲取到活動的引用,在碎片將來的初始化工作中被使用。
- onCreate(): 當創建碎片時,系統調用該方法。你需要初始化一些碎片的必要組件。這些組件是當碎片被暫停、停止時需要保留的,以便被恢復。
- onCreateView(): 當碎片將要第一次繪制它的用戶界面時系統調用該方法。為了繪制碎片的UI,你需要從該方法中返回一個代表碎片根布局的View組件。如果該碎片不提供用戶界面,直接返回null。
- onActivityCreated: 當宿主活動被創建,在onCreateView()方法之後調用該方法。活動和碎片實例與活動的視圖層級被創建。這時,視圖可以通過findViewById()方法來訪問。在這個方法中,你可以實例化需要Context對象的對象。
- onStart(): 碎片可見時調用該方法。
- onResume(): 碎片可交互時調用該方法。
- onPause(): 當首次表明用戶將要離開碎片時系統調用該方法。通常,這裡你需要提交任何的會超出用戶會話的持久化的變化。
- onStop(): 碎片將要被停止時調用。
- onDestroyView(): 調用該方法後,碎片將要被銷毀。
- onDestroy(): 該方法被用來清理碎片的狀態。但在Android平台並不保證一定被調用。
如何使用碎片?
這裡介紹創建碎片的簡單步驟。
- 首先決定在活動中需要使用多少個碎片。例如,我們需要使用兩個碎片來處理設備的橫屏和豎屏兩種模式。
- 下一步,基於碎片數量,創建繼承自類Fragment的類。類Fragment包含上面提到的回調函數。根據你的需求重寫任意的方法。
- 對應每個片段,你需要在XML文件中創建布局。這些文件中包含已定義的碎片的布局。
- 最後,基於需求修改活動文件來定義實際的碎片替換邏輯。
碎片類型
基本的碎片可以分為如下所示的三種:
- 單幀碎片 - 單幀碎片被如移動電話之類的手持設備使用。一個碎片如同一個視頻一樣顯示。
- 列表碎片 - 包含有特殊列表視圖的碎片被叫做列表碎片。
- 碎片過渡 - 與碎片事務一起使用。可以從一個碎片移動到另外一個碎片。