1、Fragment为什么被称为第五大组件
在日常开发中Fragment使用频率很高,Fragment不属于其他四大组件,但是它有属于自己的生命周期。可以方便灵活的添加到Activity中,它不能独立使用,必须依附于Activity。所以我认为它可以被称为第五大组件。
Fragment相比于Activity更节省内存,页面切换更加流畅。
2、Fragment加载到Activity的两种方式
2.1静态加载:添加Fragment到Activity的布局文件当中
2.2动态加载:动态在Activity中添加Fragment
3、FragmentPagerAdapter与FragmentStatePagerAdapter的区别
FragmentPagerAdapter适用于页面较少的情况,FragmentStatePagerAdapter适用于页面较多的情况。因为FragmentStatePagerAdapter页面切换的时候会回收内存。
在FragmentStatePagerAdapter的destoryItem()方法中,最后FragmentTransaction.remove(fragmnet)方法。真正的释放了Fragmnet的内存。这就是说FragmentStatePagerAdapter比FragmentPagerAdapter更节省内存的。
在FragmentPagerAdapter的destoryItem()方法中,最后FragmentTransaction.detach(fragment)方法。并不是真正的内存回收,只是把Fragmnet UI和Activity脱离开来。
4、Fragment的生命周期
5、Fragment的通信
5.1在Fragment中调用Activity的方法,getActivity()
5.2在Activity中调用Fragment的放发接口回调,在Fragment中定义接口,在Activity中实现方法
5.3在Fragment中调用Fragment的方法,findFragmentById();首先在Fragment通过getActivity()方法,获取Activity中的方法。然后在Activity中findFragmentById()获取到Activity所对应的另外Fragment的方法
6、Fragment的replace()、add()、remove()方法
replace:替换Fragment实例,不是直接把Fragment添加到Activity的最上层。它是把Activity的最上层的Fragment替换成它想替换的Fragment
add:将Fragment实例添加到Activity的最上层
remove:将Fragment实例从Activity的队列中删除
网友评论