Android在3.0中引入了fragments的概念,主要目的是用在大屏幕設備上--例如平板電腦上,支持更加動態和靈活的UI設計。平板電腦的屏幕要比手機的大得多,有更多的空間來放更多的UI組件,而且這些組件之間會產生更多的交互。Fragment容許這樣的一種設計,而不須要你親自來管理 viewhierarchy的複雜變化。 經過將activity的佈局分散到fragment中, 你能夠在運行時修改activity的外觀,並在由activity管理的back stack中保存那些變化.(http://developer.android.com/guide/topics/fundamentals/fragments.html) android
例如, 一個新聞應用能夠在屏幕左側使用一個fragment來展現一個文章的列表,而後在屏幕右側使用另外一個fragment來展現一篇文章--2個fragment並排顯示在相同的一個activity中,而且每個fragment擁有它本身的一套生命週期回調方法,而且處理它們本身的用戶輸入事件。 所以, 取代使用一個activity來選擇一篇文章而另外一個activity來閱讀文章的方式,用戶能夠在同一個activity中選擇一篇文章而且閱讀, 如圖所示:設計模式
fragment在你的應用中應當是一個模塊化和可重用的組件.即,由於fragment定義了它本身的佈局, 以及經過使用它本身的生命週期回調方法定義了它本身的行爲,你能夠將fragment包含到多個activity中. 這點特別重要, 由於這容許你將你的用戶體驗適配到不一樣的屏幕尺寸.舉個例子,你可能會僅當在屏幕尺寸足夠大時,在一個activity中包含多個fragment,而且,當不屬於這種狀況時,會啓動另外一個單獨的,使用不一樣fragment的activity.
ide
繼續以前那個新聞的例子 -- 當運行在一個特別大的屏幕時(例如平板電腦),應用能夠在Activity A中嵌入2個fragment。然而,在一個正常尺寸的屏幕(例如手機)上,沒有足夠的空間同時供2個fragment用, 所以, Activity A會僅包含文章列表的fragment, 而當用戶選擇一篇文章時, 它會啓動ActivityB,它包含閱讀文章的fragment.所以, 應用能夠同時支持上圖中的2種設計模式。模塊化
一般, 應當至少實現以下的生命週期方法:工具
其生命週期圖以下:佈局
大多數應用應當爲每個fragment實現至少這3個方法,可是還有一些其餘回調方法你也應當用來去處理fragment生命週期的各類階段.所有的生命週期回調方法將會在後面章節 Handlingthe Fragment Lifecycle 中討論.
ui
除了繼承基類 Fragment , 還有一些子類你可能會繼承:spa