Android进阶二十:Fragment介绍&使用方法解
定义:
Android界面中的一部分,可理解为模块化的Activity
1 Fragmeng不能独立存在,必须嵌入到Activity中
2 Fragment具有自己的生命周期,接受它自己的事件,并可以在Activity运行时被添加或删除
3 Fragment的生命周期直接受所在的Activity的影响,如,当Activity暂停时,它拥有的所有Fragment都暂停
作用:
支持动态,灵活的界面设计
1 Fragment从Android 3.0后引入
2 在低版本Android 3.0前使用Fragment,需要采用android-support-v4兼容包
生命周期解析
详解每个方法的调用场景:
onAttach:Fragment和Activity建立关联的时间调用(获取activity的传递的值)
onCreateView:为Fragment创建视图(加载布局)时调用(给当前的fragment绘制UI布局,可以使用线程更新UI)
onActivityCreate:当Activity中的onCreate方法执行完后调用(表示activity执行onCreate方法完成了的时候会调用此方法)
onDestoryView:Fragment中的布局被移除时调用(表示fragment销毁相关联的UI布局)
onDetach:Fragment和Activity解除关联的时候调用(脱离Activity)
fragment生命周期解析
1 当一个fragment被创建的时候:
onAttch()-onCreate()-onCreateView()-onActivityCreated()
2 当这个fragment对用户可见的时候,它会经历以下状态
onStart()-onResume()
3 当这个fragment进入后台模式的时候,它会经历以下状态
onPause()-onStop()
4 当这个fragment被销毁了(或者持有它的activity被销毁了)
onPause()-onStop()-onDestoryView()-onDestory()-onDetach()
5 就像Activity一样,在以下的状态中,可以使用Bundle对象保存一个fragment的对象
onCreate()
onCreateView()
onActivityCreated()
其他场景的调用
屏幕灭掉
onPause()-onSaveInstanceState()-onStop()
屏幕解锁
onStart()-onResume()
切换到其他Fragment
onPause()-onStop()-onDestoryView()
切换回本身的Fragment
onCreateView()-onActivityCreated()-onStart()-onResume()
回到桌面
onPause()-onSaveInstanceState()-onStop()
回到应用
onStart()-onResume()
退出应用
onPause()-onStop()-onDestoryView()-onDestory()-onDetach()
Fragment与Activity生命周期对比
具体使用
1 由于Fragment作为Acitivty的一部分,所有Fragment的使用一般是添加到Activity种
2 将Fragment 添加到Activity中一般有两个方法:
a 在Activity的layout.xml布局文件中静态添加
b 在Activity的.java文件中动态添加
方法1 :在Activity的layout.xml布局文件中静态添加
Activity的布局文件:
Fragment的布局文件
Fragment的.java文件
方法2 在Activity的.JAVA文件中动态添加
1 在Activity的布局文件定义1占位符(FrameLayout),这样做的好处是,可动态在Activity中添加不同的Fragment,更加灵活
Activity的布局xml:
Activity的.java文件
Activity与Fragment通信
问题1:Activity如何传递数据到Fragment:采用Bindle方式
activity fragment问题2 Fragment如何传递数据到Activity:采用接口回调方式
把实现了某一接口的类所创建的对象的引用赋给该接口声明的变量,通过该接口变量调用该实现类对象的实现的接口方法
1 设置回调接口,该接口用于Activity与Fragment通信
2 设置Fragment的类文件
3 设置Activity的类文件