Fragment优点:
1.使用频率较高,有自己的生命周期,可以更加灵活的加入到Activity中
2.Fragment比Activity更节省内存,UI切换效果更加舒适
3.Fragment需要依赖Activity,可以加载到Activity中
Fragment加载到Activity中的两种方法:
1.静态加载:添加Fragment到Activity的布局文件当中
2.动态加载:动态在Activity中添加Fragment
FragmentPagerAdapter和FragmentStatePagerAdapter区别
1.FragmentPagerAdapter用于页面较少的情况,FragmentStatePagerAdapter用于页面较多的情况
2.通过源码得知,FragmentStatePagerAdapter在每次切换ViewPager时,在destroyItem方法中,移除了fragment,释放了内存,适合页面较多的情况。
FragmentPagerAdapter在destroyItem方法中,只是将Fragment的UI和Activity的UI分离开,没有释放内存,适合页面较少的情况,对系统内存影响较小。
Fragment生命周期:
可以看到Fragment比Activity多了几个额外的生命周期回调方法:
onAttach(Activity)
当Fragment与Activity发生关联时调用。
onCreateView(LayoutInflater, ViewGroup,Bundle)
创建该Fragment的视图
onActivityCreated(Bundle)
当Activity的onCreate方法返回时调用
onDestoryView()
与onCreateView想对应,当该Fragment的视图被移除时调用
onDetach()
与onAttach相对应,当Fragment与Activity关联被取消时调用
注意:除了onCreateView,其他的所有方法如果你重写了,必须调用父类对于该方法的实现
Fragment通信
1.在Fragment中调用Activity中的方法,通过调用getActivity获取到activity,然后调用Activity中的方法
2.在Activity中调用Fragment的方法,通过接口回调方式,fragment定义接口,在Activity中调用
3.在Fragment中调用Fragment中的方法,通过findFragmentById获取到Activity中另一个Fragment的方法
Fragment的replace、add、remove方法
replace:将activity最上层的fragment实例替换为新的fragment实例
add:将fragment实例添加到activity最上层
remove:将fragment实例从activity的fragment队列中删除