昨晚在对着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。
————————————————
版权声明:本文为CSDN博主「tahlia_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/tahlia_/article/details/77970377