您的位置:首页 > 产品设计 > UI/UE

[Android UI]Fragment的管理:getFragmentManager和getSupportFragmentManager的使用区别

2017-09-13 20:05 1036 查看
昨晚在对着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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐