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級支援“傳回”鍵(向後導航)。
當向activity中添加一個Fragment時,它須置于ViewGroup控件中,并且需定義Fragment自己的界面。你可以在layoutxml檔案中聲明Fragment,元素為:<fragment>;也可以在代碼中建立Fragment,然後把它加入到ViewGroup控件中。然而,Fragment不一定非要放在activity的界面中,它可以隐藏在背景為actvitiy工作。
本章描述如何使用fragment,包括fragment在加入activity的後退棧中時如何保持自己的狀态,如何與activity以及其它fragment們共享事件,如何顯示在activity的動作欄,等等。
Android從3.0開始引入fragment,主要是為了支援更動态更靈活的界面設計,比如在平闆上的應用。平闆機上擁有比手機更大的螢幕空間來組合和互動界面元件們。Fragment使你在做那樣的設計時,不需應付view樹中複雜的變化。通過把activity的layout分成fragment,你可以在activity運作時改變它的樣子,并且可以在activity的後退棧中儲存這些改變。
例如:寫一個讀新聞的程式,可以用一個fragment顯示标題清單,另一個fragment顯示選中标題的内容,這兩個fragment都在一個activity上,并排顯示。那麼這兩個fragment都有自己的生命周期并響應自己感興趣的事件。于是,不需再像手機上那樣用一個activity顯示标題清單,用另一個activity顯示新聞内容;現在可以把兩者放在一個activity上同時顯示出來。如下圖:

Fragment必須被寫成可重用的子產品。因為fragment有自己的layout,自己進行事件響應,擁有自己的生命周期和行為,是以你可以在多個activity中包含同一個Fragment的不同執行個體。這對于讓你的界面在不同的螢幕尺寸下都能給使用者完美的體驗尤其重要。比如你可以在程式運作于大螢幕中時啟動包含很多fragment的activity,而在運作于小螢幕時啟動一個包含少量fragment的activity。
舉個例子--還是剛才那個讀新聞的程式-當你檢測到程式運作于大螢幕時,啟動activityA,你将标題清單和新聞内容這兩個fragment都放在activityA中;當檢測到程式運作于小螢幕時,還是啟動activityA,但此時A中隻有标題清單fragment,當選中一個标題時,activityA啟動activityB,B中含有新聞内容fragment。
本文轉自老Zhan部落格園部落格,原文連結:http://www.cnblogs.com/mybkn/articles/2455134.html,如需轉載請自行聯系原作者