安卓漫漫路之碎片Fragment不同包下的區別.

Fragment簡介: (碎片)


在最初的時候,咱們如果要想顯示多個佈局,只能創建多個activity跳轉來達到咱們想要的效果.但是Fragment控件出來之後,果然不負衆望.他使一切變的美好華麗又簡單,咱們可以認爲Fragment就是Activity的一個界面的一個組成部分(必須依存於Activity,因此Activity的生命週期會直接影響到Fragment的生命週期).當Activity寫好幀佈局之後,咱們就可以創建咱們想要的Fragment佈局來填充到Activity中來展示.並且可以通過控制FragmentTransaction(Fragment事務管理者,得到FragmentManager之後通過fm.beginTransaction()得到)提交不同的事務來動態的添加,替換和移除某個Fragment.達到展示多個佈局的效果.
Activity的界面可以有完全不同的Fragment組成,並且Fragment擁有自己的生命週期和接收、處理用戶的事件,這樣就不必在Activity寫一堆控件的事件處理的代碼了.


Fragment有兩個包:android.support.v4.app.fragment包和android.app.fragment

功能都是一樣的,但是有些API是有區別的,例如: 

-----------------------------------------------------------------------------------------------------------------------

其一: 手機系統版本區別:

· android.support.v4.app.fragment包是爲可以向下兼容至1.6系統.

· android.app.fragment包是3.0系統以後的才能使用的,不過這也無所謂了,隨着人們對科技不斷的追求,NDK研發人員不斷的努力,系統會越來越高越來越好.16年10月份左右7.0都開始公測了. 

-----------------------------------------------------------------------------------------------------------------------
其二: 管理Fragment的主Activity區別:

· android.support.v4.app.fragment包下的需要繼承FragmentActivity,否則(java.lang.ClassCastException)

· android.app.fragment包下的照樣繼承Activity

-----------------------------------------------------------------------------------------------------------------------
其三: 對FragmentManager的獲取區別:

· android.support.v4.app.fragment包下需要使用getSupportFragmentManager()來獲取管理,代碼如下:

  FragmentManager fm = getSupportFragmentManager();

· android.app.fragment包下需要使用getFragmentManager(),如下:

  FragmentManager fm = getFragmentManager();
-----------------------------------------------------------------------------------------------------------------------
其四: 強調FragmentTrancation.commit:

簡介: 熟悉數據庫的同學都知道,事務指的就是一種原子性、不可拆分的操作。所謂的Fragment事務就是:對Fragment進行添加、移除、替換或執行其它動作,提交給Activity的每一個變化。這就是Fragment事務。

通過FragmentManager.beginTransaction()我們可以開始一個事務。
在事務中,我們可以對Fragment進行的操作以及對應的方法如下:
添加:add()
移除:remove()
替換:replace()
提交事務:commit()
上面幾個是比較常用的,還有attach()、detach()、hide()、addToBackStack()等方法。
我們需要注意的是,Fragment以ID或Tag作爲唯一標識,所以remove和replace的參數是Fragment,這個Fragment目標Fragment一致(必須是相同的包,否則會編譯時異常)。

------------------------------------------------------------------------------------------------------------------------




如有問題請多指正,您的指正使我更我正確的前行.



發佈了26 篇原創文章 · 獲贊 39 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章