Android控件使用篇Android专题

FragmentManager知识汇总

2021-03-25  本文已影响0人  千夜零一

关于getChildFragmentManager()、 getFragmentManager()、getSupportFragmentManager()

知识储备:三个类

FragmentActivity

FragmentManager

FragmentTranscation

三者的关联:一个FragmentActivity可以包含多个Fragment,谁来管理? FragmentManager就起到了作用。做Fragment的增加、删除、替换的时候,事务FragmentTranslation 来负责执行。

getFragmentManager()和getSupportFragmentManager()的区别

android.app中获取管理类的方法就是getFragmentManager(),不常用了。

android的v4扩展包中的FragmentActivity中获取FragmentManager使用的就是getSupportFragmentManager(),可以兼容低版本,较为常用。

getFragmentManager() 属于Activity的方法

getSupportFragmentManager()属于FragmentActivity的方法

getChildFragmentManager()和getFragmentManager()的区别

它们两个属于两个不同的类,前者属于Fragment,后者属于Activity(上面有提到)。

需要管理相互独立的并且隶属于Activity的Fragment使用FragmentManager()。

Fragment中动态的添加Fragment要使用getChildFragmetManager()来管理,也就是说Framgnent中还嵌套了别的Fragment。

getChildFragmentManager() 属于Fragment

他们都意在获取FragmentManager对象,这个对象是做什么的?

顾名思义,这是个用来管理Fragment的对象。

FragmentManager对象通常是在其宿主环境中,在Activity(FragmentActivity)中采用getFragmentManager()(getSupportFragmentManager())方法来获取到。在Fragment中采用getChildFragmentManager()方法来获取到。

宿主环境类:通常指包含该Framgnet的主环境,也就是说FragmentManager的宿主环境类,可以是Activity,也可以是Fragment。

也就意味着,一个Fragment可以作为容器,包含其他的FragmentManager对象,用来管理Fragment中的一组Fragment。

fragmentManager.png

FragmentManager对象的使用方法?

// 1.获取FragmentManager,在活动中可以直接通过调用getFragmentManager()方法得到
 fragmentManager = getSupportFragmentManager();
//        fragmentManager = getFragmentManager();
 // 2.开启一个事务,通过调用beginTransaction()方法开启
 transaction = fragmentManager.beginTransaction();
 // 3.向容器内添加或替换碎片,一般使用replace()方法实现,需要传入容器的id和待添加的碎片实例
 transaction.replace(R.id.testFragment, fragment);  //fr_container不能为fragment布局,可使用线性布局相对布局等。
 // 4.使用addToBackStack()方法,将事务添加到返回栈中,填入的是用于描述返回栈的一个名字
 transaction.addToBackStack(null);
 // 5.提交事物,调用commit()方法来完成
 transaction.commit();</pre>

FragmentManager对象的初始化时机

FragmentManager必须初始化完成,才能管理Fragment。这里的初始化完成指的是通过构造器创建FragmentManager对象以后, 调用其attach()方法。

在Activity创建过程中,当回调到onCreate()方法之前FragmentManager对象已经完成初始化了。

上一篇下一篇

猜你喜欢

热点阅读