Fragment生命週期筆記
Activity A為承載Fragment的活動
當直接在一個Activity中直接通過</fragment>
標籤新增Fragment時:
將含有Fragment的Activity推出棧時:
也可以通過(Support)FragmentManager直接在Activity中新增Fragment,此時與直接使用</fragment>
的會有些許不同,(注意測試程式碼的順序,日誌是在事務提交後才列印的)
將含有Fragment的Activity推出棧時:
另外,還附上鴻神的相關部落格:
Android Fragment 真正的完全解析(上)
Fragment家族常用的API
Fragment常用的三個類:
android.app.Fragment 主要用於定義Fragment
android.app.FragmentManager 主要用於在Activity中操作Fragment
android.app.FragmentTransaction 保證一些列Fragment操作的原子性,熟悉事務這個詞,一定能明白~
a、獲取FragmentManage的方式:
getFragmentManager() // v4中,getSupportFragmentManager
b、主要的操作都是FragmentTransaction的方法
FragmentTransaction transaction = fm.benginTransatcion();//開啟一個事務
transaction.add()
往Activity中新增一個Fragment
transaction.remove()
從Activity中移除一個Fragment,如果被移除的Fragment沒有新增到回退棧(回退棧後面會詳細說),這個Fragment例項將會被銷燬。
transaction.replace()
使用另一個Fragment替換當前的,實際上就是remove()然後add()的合體~
transaction.hide()
隱藏當前的Fragment,僅僅是設為不可見,並不會銷燬
transaction.show()
顯示之前隱藏的Fragment
detach()
會將view從UI中移除,和remove()不同,此時fragment的狀態依然由FragmentManager維護。
attach()
重建view檢視,附加到UI上並顯示。
transatcion.commit()//提交一個事務
注意:常用Fragment的哥們,可能會經常遇到這樣Activity狀態不一致:State loss這樣的錯誤。主要是因為:commit方法一定要在Activity.onSaveInstance()之前呼叫。
上述,基本是操作Fragment的所有的方式了,在一個事務開啟到提交可以進行多個的新增、移除、替換等操作。
值得注意的是:如果你喜歡使用Fragment,一定要清楚這些方法,哪個會銷燬檢視,哪個會銷燬例項,哪個僅僅只是隱藏,這樣才能更好的使用它們。
a、比如:我在FragmentA中的EditText填了一些資料,當切換到FragmentB時,如果希望會到A還能看到資料,則適合你的就是hide和show;也就是說,希望保留使用者操作的皮膚,你可以使用hide和show,當然了不要使勁在那new例項,進行下非null判斷。
b、再比如:我不希望保留使用者操作,你可以使用remove(),然後add();或者使用replace()這個和remove,add是相同的效果。
c、remove和detach有一點細微的區別,在不考慮回退棧的情況下,remove會銷燬整個Fragment例項,而detach則只是銷燬其檢視結構,例項並不會被銷燬。那麼二者怎麼取捨使用呢?如果你的當前Activity一直存在,那麼在不希望保留使用者操作的時候,你可以優先使用detach。
Android Fragment 真正的完全解析(下)
內容簡介:
1、如何管理Fragment回退棧
2、Fragment如何與Activity互動
3、Fragment與Activity互動的最佳實踐
4、沒有檢視的Fragment的用處
5、使用Fragment建立對話方塊
6、如何與ActionBar,MenuItem整合等
相關文章
- Fragment生命週期Fragment
- Fragment的生命週期Fragment
- fragment生命週期(總結)Fragment
- react生命週期筆記React筆記
- 信管筆記-- 生命週期筆記
- Fragment 生命週期的詳情Fragment
- 關於Fragment的生命週期Fragment
- JSP筆記-生命週期JS筆記
- React筆記(元件生命週期)React筆記元件
- minjun信管筆記-- 生命週期筆記
- Android Fragment生命週期深入探究AndroidFragment
- React生命週期學習筆記React筆記
- React元件生命週期——精華筆記React元件筆記
- Android Fragment生命週期——多螢幕支援AndroidFragment
- Android Fragment的生命週期和返回棧AndroidFragment
- Vue生命週期函式.個人筆記Vue函式筆記
- docker筆記23-pod的生命週期Docker筆記
- Activity生命週期與啟動模式筆記模式筆記
- Android | Activity和Fragment最全生命週期+發現大牛AndroidFragment
- ES 筆記三十三: 分片及其生命週期筆記
- Vue學習筆記(2)—— Vue的生命週期Vue筆記
- ReactNative學習筆記五之生命週期React筆記
- 關於Fragment可見與不可見時的生命週期Fragment
- react-native學習筆記之 生命週期React筆記
- 軟體安全開發生命週期讀書筆記筆記
- Android學習筆記04——Activity的生命週期Android筆記
- React-生命週期雜記React
- 生命週期
- iOS開發筆記(九):UIViewController的生命週期iOS筆記UIViewController
- vue 基礎入門筆記 09:生命週期函式Vue筆記函式
- Service的啟動、繫結,以及生命週期的筆記筆記
- 記憶體頁生命週期下降記憶體
- 2018.03.05 Android 記一次關於Fragment生命週期的討論。AndroidFragment
- View生命週期與Activity生命週期的關係View
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Activity生命週期