FragmentManager知识汇总

作者: 千夜零一 | 来源:发表于2021-03-25 10:47 被阅读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对象已经完成初始化了。

    相关文章

      网友评论

        本文标题:FragmentManager知识汇总

        本文链接:https://www.haomeiwen.com/subject/ugelhltx.html