Fragment在Android 3.0(?API 11)引入,是為了支持在大屏上顯示更加動態、靈活的UI,比如在平板和電視上。Fragment可以看作是嵌套的Activity,類似ActivityGroup,但是開銷肯定沒有ActivityGroup那么大,每一個Fragment管理著一個View,Fragment彼此之間相互獨立,有自己的生命周期,這個生命周期是在Activity生命周期中的。Fragment可以用來解決屏幕適配和動態創建View的問題。
一個Fragment總是嵌入到一個Activity,是一個模塊化的View,它的生命周期受它所嵌入的Activity生命周期的的影響。比如Activity進入paused狀態,那么多有附在這個Activity的Fragment都會進入paused狀態,當Activity被銷毀時,所有附在這個Activity的Fragment也都會銷毀。然后當Activty進入運行狀態onResume后,你可以獨立的管理每一個Fragment,可以add一個Fragment,也可以remove一個Fragment。在你執行一個Fragment事務的時候(創建并且顯示出來),你可以把這個Fragment放到Fragment回退棧中,這個回退棧記錄了所有你執行過的Fragment事務,用戶在點擊返回鍵的時候可以從Fragment棧中取一個Fragment來顯示。
Fragment的生命周期:
如果你很清楚Activity的生命周期那么Fragment的生命周期就很容易理解,在Fragment中有很多類似Activity生命周期函數的回調方法,這些方法由Android系統調用。官方的Fragment生命周期圖如下:

- onCreat():
系統調用這個函數來創建Fragment,這個方法中用來創建整個Fragment周期中都會用到的資源,比如在paused、stoped,或者resumed方法中用到的資源。 - onCreateView():
當Fragment需要第一次繪制用戶界面的時候系統調用這個函數完成UI的繪制,你必須在這個函數返回一個View,這個View是Fragment的根View,如果你不想Fragment顯示View就返回null。 - onPause():
當離開Fragment時系統會首先調用這個函數,在這個函數中你需要保存用戶的狀態類似在Activity的onPause方法中做的工作。
本文為原創,禁止轉載!
大家如果對編程感興趣,想了解更多的編程知識,解決編程問題,想要系統學習某一種開發知識,我們這里有java高手,C++/C高 手,windows/Linux高手,android/ios高手,請大家關注我的微信公眾號:程序員互動聯盟or coder_online,大牛在線為您提供服務。