什麼是Fragment?
Fragment片段(或稱為區塊)是Android提供的一個畫面區塊,可將Fragment放在一個Activity中
- 最近在使用Fragment順便記錄一下 Fragment的生命週期
Fragment
Fragment不能獨立存在,必須嵌入到Activity中
Fragment具有自己的生命週期,接收它自己的事件,並可以在Activity運行時被增加或刪除
Fragment的生命週期直接受所在的Activity的影響。如:當Activity暫停時,它擁有的所有Fragment們都暫停
Fragment從 Android 3.0後引入
在低版本Android 3.0前使用 Fragment,需要採用android-support-v4.jar
生命週期
來看一下關方介紹的生命周期圖
每個Fragment擁有自己的生命週期,也就是說,在特定的狀況會自動呼叫特定的方法
供使用者依功能需求覆寫這些方法,加入必要的程式碼。依照Fragment產生與出現的順序會執行的方法描述如下
onAttach
當Fragment被加到某個Activity畫面中時,會自動呼叫此方法。
onCreate
Fragment被建立時會自動呼叫此方法,可加入初始化元件或資料的程式碼。
onCreateView
將在畫面中第一次顯示Fragment時會自動呼叫此方法,必須回傳Fragment畫面的View元件,
設計時,請使用方法中的LayoutInflater物件,在此方法中產生畫面元件並回傳。
onActivityCreated
當加入本Fragment的Activity被建立時,該Activity的onCreate方法執行完成後
會自動執行此方法。執行完此方法後,Fragment才出現在畫面上。
onStart
當Fragment出現在畫面中時先執行此方法。
onResume
執行完onStart方法後,再自動執行本方法。完成後即在畫面中與使用者互動。
暫停階段
當使用者按下返回鍵,或是程式中將Fragment自某個Activity中移除時,會自動執行以下方法:
onPause
進入暫停前第一個執行的方法。
onStop
執行完onPause方法後,自動執行本方法。
onDestroyView
此時Fragment已不在畫面中,呼叫此方法。
onDestroy
當Fragment要被清除之前,會執行此方法。
onDetach
與當初被加入的Activity卸載時,會自動執行此方法。
實作Fragment
- 為了呈現效果 增加個底色
效果
MainActivity
|
|
activity_main.xml
|
|
MainFragment
|
|
fragment_blank.xml
|
|
測試觀察生命週期
程式啟動
- 執行專案後,MainActivity將Fragment加入畫面中 , 在系統中產生物件時,執行的順序如下
- onAttac
- onCreate
- onCreateView
- 取得View物件
- 執行 onActivityCreated後
- Fragment即顯示在畫面中
- 之後執行onStart> onResume
按下HOME
- 按下HOME鍵 執行的順序如下
- 與Activity的生命週期相同,先執行onPause,再執行onStop方法後,進入背景。
按下Recents
- 回到程式後執行順序如下
- onStart
- onResume
按下返回鍵
- 按下返回鍵 順序如下
- onPause
- onStop
- 應用程式消失在畫面後
- 執行onDestroyView
- onDestroy
- 最後執行onDetach