Fragment
一、什么是Fragment 或者说为什么会有Fragment ?
当Android3.0之后,谷歌引入了碎片化的Fragment。为什么要使用Fragment,这是我们首先应该探讨的问题。
Android3.0主要是引入了平板,利用碎片化,可以很好的管理平板的界面,因为屏幕很大,一个页面肯定要由多个布局来构成,所以利用碎片化可以实现各个布局之间的解耦,方便管理。
为什么要在手机上也提倡使用Fragment呢,主要是因为一段代码可以在平板跟手机上运行,减少了开发的资源。对界面加载速度有要求时可以代替 Activity使用
当然随之而来的跟 Activity 类似但又不完全相同的生命周期加大了管理难度。比如:多层Fragment嵌套
那么Fragment到底是什么呢?
举个例子:如果把android 一个应用比作一个火箭,activity 就是相当于每个不同零件生产商,Fragment 就相当于每个零件生产商内部子工厂,view 就是相当于零件生产商的包装间,生产商开业了子工厂也可以开业了,生产商倒闭了子工厂也倒闭了。
为了解决屏幕和复用 才有了Fragment ,之后才有组件化和复用一说。
二、Fragment 为什么被称为第五大组件?
- Fragment为什么被称为第五大组件
我们可以将Fragment称为第五大组件,因为Fragment使用的频率和自身的生命周期。同时Fragment可以动态灵活加载activity,但Fragment必须依附和加载在activity上。
在android3.0后为了更好的解决view在大屏幕上适配和使用,而提出的。 - Fragment加载到Activit的两种方式
第一种 静态加载 添加Fragment到Activity的布局文件当中
第二种 动态加载 项目中用的比较多
动态在activity 中添加fragment
第一步 添加一个FragmentTransaction的实例
第二步 用add()方法加上Fragment的对象rightFragment
第三步 调用commit()方法使用FragmentTransaction实例改变生效 - FragmentPagerAdapter与FragmentStatePagerAdapter区别
FragmentPagerAdapter在每次切换viewpager的时候他会加收内存的,所以他适合较多的界面。
而FragmentStatePagerAdapter在切换viewpager时只是分离ui并没有回收内存,所以他适合界较少的界面。
三、Fragment 的生命周期?
开始创建Fragment对象
onAttach
onCreate
onCreateView
onViewCreated
Activity—>onCreate
onActivityCreated
Activity —>onStart
onStart
Activity —>onResume
onResume (Fragment完全初始化完毕)
onPause
Activity —>onPause
onstop
Activity —>onStop
onDestoryView
onDestory
onDetach
Activity—> onDestory activity销毁
四、Fragment 之间的通信
- 在fragment中调用activity中的方法getActivity
- 在Activity中调用Fragment中的方法 接口回调用
- 在Fragment中调用Fragment的方法 findFragmentById
五、Fragment管理器:FragmentManager
- Fragment的replace\add\remove方法
replace是替换fragment实例
add是添加fragment实例
remove是删除fragment实例 - 未完...