android之Fragment(官網資料翻譯)一

目錄(?)[+]html

  1. Fragment要點
  2. 設計哲學
  3. 建立Fragment
    1. 添加一個用戶界面
    2. 將fragment添加到activity
    3. 撰寫代碼將fragment添加到一個已存在的ViewGroup
    4. 添加一個無UI的fragment
  4. 管理Fragment
  5. 處理Fragment事務
  6. 與Activity通訊
    1. 爲Activity建立事件回調方法
    2. 添加項目到ActionBar
  7. 處理fragment的生命週期
    1. 與activity生命週期的協調工做
 

Fragment要點

  1. Fragment做爲Activity界面的一部分組成出現
  2. 能夠在一個Activity中同時出現多個Fragment,而且,一個Fragment亦可在多個Activity中使用。
  3. 在Activity運行過程當中,能夠添加、移除或者替換Fragment(add()、remove()、replace())
  4. Fragment能夠響應本身的輸入事件,而且有本身的生命週期,固然,它們的生命週期直接被其所屬的宿主activity的生命週期影響。

設計哲學

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

要建立一個fragment, 必須建立一個 Fragment 的子類 (或者繼承自一個已存在的它的子類). Fragment類的代碼看起來很像 Activity 。它包含了和activity相似的回調方法, 例如onCreate()、 onStart()、onPause()以及 onStop()。事實上, 若是你準備將一個現成的Android應用轉換到使用fragment,可能只需簡單的將代碼從你的activity的回調方法分別移動到你的fragment的回調方法便可。

一般, 應當至少實現以下的生命週期方法:工具

  • onCreate()
    當建立fragment時, 系統調用該方法.
    在實現代碼中,應當初始化想要在fragment中保持的必要組件, 當fragment被暫停或者中止後能夠恢復.
  • onCreateView()
    fragment第一次繪製它的用戶界面的時候, 系統會調用此方法. 爲了繪製fragment的UI,此方法必須返回一個View, 這個view是你的fragment佈局的根view. 若是fragment不提供UI, 能夠返回null.
  • onPause()
    用戶將要離開fragment時,系統調用這個方法做爲第一個指示(然而它不老是意味着fragment將被銷燬.) 在當前用戶會話結束以前,一般應當在這裏提交任何應該持久化的變化(由於用戶有可能不會返回).


 

其生命週期圖以下:佈局


大多數應用應當爲每個fragment實現至少這3個方法,可是還有一些其餘回調方法你也應當用來去處理fragment生命週期的各類階段.所有的生命週期回調方法將會在後面章節 Handlingthe Fragment Lifecycle 中討論.
ui

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

 

  • DialogFragment
    顯示一個浮動的對話框.
    用這個類來建立一個對話框,是使用在Activity類的對話框工具方法以外的一個好的選擇,
    由於你能夠將一個fragment對話框合併到activity管理的fragment back stack中,容許用戶返回到一個以前曾被摒棄的fragment.
  • ListFragment
    顯示一個由一個adapter(例如 SimpleCursorAdapter)管理的項目的列表, 相似於ListActivity.
    它提供一些方法來管理一個list view, 例如 onListItemClick()回調來處理點擊事件.
  • PreferenceFragment 顯示一個 Preference對象的層次結構的列表, 相似於PreferenceActivity. 這在爲你的應用建立一個"設置"activity時有用處.
相關文章
相關標籤/搜索