[Android UI]Fragment的管理:getFragmentManager和getSupportFragmentManager的使用區別

昨晚在對着Fragmet的新聞客戶端例子練習了一次之後,對獲取FragmentManager的兩種方法getFragmentManager()和getSUpportFragmentManager()的區別有點疑問。在衆多博客之中查閱時得出的答案基本是:使用3.0以上系統獲取FragmentManager使用getFragmentManager();使用3.0以下系統獲取FragmentManager使用getSupportFragmentManager()。然而本人還是不懂怎麼區分,在Stack Overflow上查閱加上自己的一點理解,大概得到了以下解釋(如有不對請指正!感謝!)


***************************************

首先,Fragmet在使用時是有兩個包的,分別是app包和v4包。v4包主要用來兼容低版本系統也能正常顯示Fragment,而app包在安卓4.2系統之前的設備運行Fragment時,程序會崩潰。因此我們一般使用Fragment都選擇使用v4包中的Fragment以確保低版本的系統運行正常。

(以下都建立在使用v4包中的Fragment的前提之下)


對Fragment進行一系列操作時,我們都會通過使用FragmentManager進行事務管理,那麼獲取FragmentManager就是管理的第一步了。


在Activity中:使用v4庫的Fragment,要求Activity必須繼承於FragmentActivty,並且對應的也該使用v4庫中的方法獲取FragmentManager。

由於v4庫不能直接獲取FragmentManager,因此這裏使用getSupportFragmentManager()間接獲取FragmentManager。

※工程中Activity默認繼承的AppCompatActivity也可以使用,查閱源碼後發現AppCompatActivity是繼承於FragmentActivity的,所以也可以放心使用。對於3.0以上版本的(也就是不需要使用v4包的Fragment的),則可以直接繼承Activity,可以不繼承FragmentActivity。


在Fragment中:可以使用getFragmentManager()直接獲取FragmentManager。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章