Fragment面试题详解

一.Fragment加载到Activity的两种方式

1.静态加载:以一个fragment的xml中的标签添加到activity中

2.动态加载

    1>获取到FragmentManager,(getFragmentManager())并获取到transaction(fragmentmanager.begintransaction())

    2>创建fragment(AFragment  aFragment = new  AFragment())

    3>使用add方法将fragment添加到transaction中(transaction.add())

    4>调用commit()方法使得transaction实例改变生效

二.FragmentPagerAdapter与FragmentStatePagerAdapter区别

前者适用于页面较少的情况,后者适用于页面较多的情况,通过源码了解,主要查看destroyItem方法中的最后一行,mcurtransaction.remove(fragment),通过这行代码了解到,FragmentStatePagerAdapter是真正释放fragment内存,在FragmentPagerAdapter的destroyItem方法中所调用的是mcurtransaction.detach(fragment),他仅仅是将fragment的页面与activity的页面抽离开来,并没有真正的销毁fragment释放内存.

三.fragment的生命周期


四.fragment通信

    1.在fragment中调用activity中的方法getActivity

    2.在Activity中条用Fragment中的方法,一般常用的是接口回调,在fragment中创建接口,在activity中实现接口,这样就能完成activity中调用fragment中的方法

    3.在Fragment中调用Fragment中的方法,首先先通过getactivity方法,获取activity的方法,然后通过fingFragmentById获取到另外一个fragment的方法,然后进行调用

五.fragment的replace , add , remove , 方法

    replace方法是将activity中顶层的fragment进行替换

    add方法是将一个fragment添加到activity中

    remove方法是将activity中的某个fragment进行移除

你可能感兴趣的:(Fragment面试题详解)