❶ Android入門教程 | Fragment 基礎概念
Fragment,直譯為「碎片」,「片段」。Fragment表示FragmentActivity中的行為或界面的一部分。可以在一個Activity中組合多個片段,從而構建多窗格界面,並在多個Activity中重復使用某個片段。可以將片段視為Activity的模塊化組成部分,它具有自己的生命周期,能接收自己的輸入事件,並且可以在Activity運行時添加或移除片段(這有點像可以在不同Activity中重復使用的「子Activity」)。
片段必須始終託管在Activity中,其生命周期直接受宿主Activity生命周期的影響。例如,當Activity暫停時,Activity的所有片段也會暫停;當Activity被銷毀時,所有片段也會被銷毀。
不過,當Activity正在運行(處於已恢復生命周期狀態)時,可以獨立操縱每個片段,如添加或移除片段。當執行此類片段事務時,也可將其添加到由Activity管理的返回棧 — Activity中的每個返回棧條目都是一條已發生片段事務的記錄。藉助返回棧,用戶可以通過按返回按鈕撤消片段事務(後退)。
Fragment的優點包括其代碼與Activity非常相似,包含與Activity類似的回調方法,如onCreate()、onStart()、onPause() 和onStop()。實際上,如果要將現有Android應用轉換為使用片段,可能只需將代碼從Activity的回調方法移入片段相應的回調方法中。通常,至少應實現以下生命周期方法。
片段通常用作Activity界面的一部分,並且會將其自己的布局融入Activity。如要為片段提供布局,必須實現onCreateView()回調方法,Android系統會在片段需要繪制其布局時調用該方法。此方法的實現所返回的View必須是片段布局的根視圖。如要從onCreateView()返回布局,可以通過XML中定義的布局資源來擴展布局。為幫助您執行此操作,onCreateView()提供了一個LayoutInflater對象。例如,以下這個Fragment子類從example_fragment.xml文件載入布局:。
接下來,需將該片段添加到您的Activity中。
通常,片段會向宿主Activity貢獻一部分界面,作為Activity整體視圖層次結構的一部分嵌入到Activity中。可以通過兩種方式向Activity布局添加片段。靜態方式在Activity的布局文件內聲明片段。Java代碼載入Fragment通過編程方式將片段添加到某個現有ViewGroup。如要在Activity中執行片段事務(如添加、移除或替換片段),則必須使用FragmentTransaction中的API。
在Activity中使用片段的一大優點是,可以通過片段執行添加、移除、替換以及其他操作,從而響應用戶交互。提交給Activity的每組更改均稱為事務,並且可使用FragmentTransaction中的API來執行一項事務。也可將每個事務保存到由Activity管理的返回棧內,從而讓用戶能夠回退片段更改(類似於回退Activity)。
每個事務都是想要同時執行的一組更改。可以使用add()、remove()和replace()等方法,為給定事務設置您想要執行的所有更改。然後,如要將事務應用到Activity,必須調用commit()。不過,在調用commit()之前,可能希望調用addToBackStack(),以將事務添加到片段事務返回棧。該返回棧由Activity管理,允許用戶通過按返回按鈕返回上一片段狀態。
在 Activity中使用Fragment的一大優點是,可以通過片段執行添加、移除、替換以及其他操作,從而響應用戶交互。每個事務都是想要同時執行的一組更改。可以使用add()、remove()和replace()等方法,為給定事務設置您想要執行的所有更改。然後,如要將事務應用到Activity,必須調用commit()。不過,在調用commit()之前,可能希望調用addToBackStack(),以將事務添加到片段事務返回棧。該返回棧由Activity管理,允許用戶通過按返回按鈕返回上一片段狀態。
在 Activity中使用Fragment的一大優點是,可以通過片段執行添加、移除、替換以及其他操作,從而響應用戶交互。每個事務都是想要同時執行的一組更改。可以使用add()、remove()和replace()等方法,為給定事務設置您想要執行的所有更改。然後,如要將事務應用到Activity,必須調用commit()。不過,在調用commit()之前,可能希望調用addToBackStack(),以將事務添加到片段事務返回棧。該返回棧由Activity管理,允許用戶通過按返回按鈕返回上一片段狀態。