Fragment(1):基本概念

爲何引入Fragment

我們之前的Activity都是都是全屏處理較爲簡單的單一事務功能,適合於屏幕尺寸較小的智能手機,但是對於平板,有更大的顯示空間,運行用戶在上面處理更多的功能,例如屏幕左邊是email列表,右邊的某email的內容。於是在Android 3.0引入了fragment。Fragment不僅可用於平板,同樣也可用於手機尺寸。

大小屏幕的適配

某種意義上Fragment是屏幕中的一個子activity,但是在一個屏幕顯示多個activity會造成概念和邏輯的混亂,所以引入fragment的概念,可以理解爲屏幕中的一塊UI,可作爲activity的一部分。Fragment是view的容器,加載layout,處理一小部分屏幕,它是activity的一部分。Fragment提供的UI和代碼的重用,例如,在大屏幕設備中,顯示左右兩個fragment或者上下兩個fragment(具體看orientation),在小屏幕設備中則顯示其中一個fragment。

使用fragment,將很容易處理這種情況,activity只需要對fragment進行佈局,具體的view的擺放和操作,由fragment進行處理。

橫屏、豎屏切換

當屏幕進行橫屏/豎屏的切換(模擬器轉向可以簡單按數字小鍵盤的“7”),activity會退出,從代碼中看調用了onDestroy(),重新加載activity(調用了onCreate()),我們需要對原有狀態保存,以便切換屏幕後,用戶能繼續操作,而不是重頭開始。保存數據或狀態會比較麻煩,可以用fragment來解決。

返回鍵

按返回鍵,activity同樣也會調用onDestroy()退出。如果在應用中,再次進入該activity,有時也會希望在上次基礎上繼續執行,同樣也存在狀態保持的問題。fragment中,按返回鍵,根據fragment stack進行回退,仍然留在當前的activity中。

什麼是Fragment

Activity是Context的繼承,而fragment是Object的繼承,在android.app包中。fragment可具有層次結構的view(來自xml或者代碼)。Fragment有一個bundle可以存貯數據,和activity類似,在創建時進行初始化調用,此外還有一個bundle用於保存現有狀態,在onCreate(),onInflate(),onCreateView() 和onActivityCreated()都指向該對象。

一個activity可以顯示多個fragment,如果fragment A被fragment B替代,則fragment A會被放入back stack中,用戶按返回鍵時,可以重新顯示fragment A。

一個fragment具有一個tag和一個ID,可用於索引

fragment的生命週期如下。這個圖先放在這裏,以後結合小例子理解。

轉自:http://blog.csdn.net/flowingflying/article/details/12505453

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章