Android 3.0開始引入fragments(碎片、片段)類

張智清發表於2013-07-23

Fragment要點

  1. Fragment作為Activity介面的一部分組成出現。

  2. 可以在一個Activity中同時出現多個Fragment,並且,一個Fragment亦可在多個Activity中使用。

  3. 在Activity執行過程中,可以新增、移除或者替換Fragment(add()、remove()、replace())。

  4. Fragment可以響應自己的輸入事件,並且有自己的生命週期,當然,它們的生命週期直接被其所屬的宿主activity的生命週期影響。

 

  Android在3.0開始引入了fragments的概念,提供了更加動態和靈活的UI設計,而不需要自己來管理ViewHierarchy(檢視層次)的複雜變化。通過將activity的佈局分散到fragment中,可以在執行時修改activity的外觀,並在由activity管理的Back Stack中儲存這些變化。

  從以上例圖,可以知道:fragment在開發的應用程式中應當是一個模組化和可重用的元件。即fragment定義了自己的佈局,以及通過使用它自己生命週期的回撥方法定義其自己的行為,由此可以將fragment包含到多個activity中

 

建立Fragment

  要建立一個fragment,必須建立一個Fragment的子類(或者繼承自一個已存在的Fragment的子類)。當然,Fragment類的程式碼很類似Activity,它包含了和activity相似的回撥方法。通常一個fragment要至少實現如下生命週期的回撥方法:

onCreate()

當建立fragment時,系統呼叫該方法。在實現程式碼中,應當初始化想要在fragment中保持的必要元件,當fragment被暫停或者停止後可以恢復。

 

onCreateView()

fragment第一次繪製它自己的使用者介面時,系統會呼叫此方法。為了繪製fragment的UI,此方法必須返回一個View,這個view就是你fragment佈局的根view。如果fragment不提供UI,可以返回null。

 

onPause()

使用者將要離開fragment時,系統呼叫這個方法作為第一個指示(然而它不總是意味著fragment將被銷燬)。在當前使用者會話結束之前,通常應當在這裡提交任何應該持久化的變化(因為使用者有可能不會返回)。

除了繼承基類 Fragment , 還有一些子類你可能會繼承:

  • DialogFragment
    顯示一個浮動的對話方塊.  
    用這個類來建立一個對話方塊,是使用在Activity類的對話方塊工具方法之外的一個好的選擇,因為你可以將一個fragment對話方塊合併到activity管理的fragment back stack中,允許使用者返回到一個之前曾被摒棄的fragment。

  • ListFragment
    顯示一個由一個adapter(例如 SimpleCursorAdapter)管理的專案的列表,類似於ListActivity。
    它提供一些方法來管理一個list view,例如 onListItemClick()回撥來處理點選事件。

  • PreferenceFragment
    顯示一個 Preference物件的層次結構的列表,類似於PreferenceActivity。
    這在為你的應用建立一個"設定"activity時有用處。

 





相關文章