Fragment学习
2015-11-30 09:48
148 查看
1)生命周期与Activity的生命周期的关系
①Activity处于暂停状态时,Fragment也进入暂停状态②Activity销毁时,Fragment也被销毁
③只有Activity处于Resume状态时,Fragment的生命周期可被独立操作。
2)onCreateView()与inflate()方法
△ 如果继承了ListFragment,则不需要重写onCreateView(),因为该方法默认返回一个ListView。A. onCreateView()的参数
LayoutInflater inflater:从父容器传递进来的LayoutInflater
ViewGroup container:Fragment被添加进的父容器
Bundle savedInstanceState:onSavedInstanceState()方法返回的数据
B.inflate()的参数
int ResourceId:渲染的布局资源
ViewGroup container:当前布局的父容器
boolean attachToRoot:true为加入父容器,false为不加入。而系统已经将当前布局加入到父布局,若设为true,则父布局会将当前布局再添加进父布局一遍,所以一般为false。
3)将Fragment添加入Activity的方法
①在Actvity的布局文件中加入<fragment />在<fragment/>中指定android:name=”包名.类名”,来指定需要实例化的Fragment。
当系统创建Activity的布局,遇到<fragment />时,则实例化该Fragment,并调用该Fragment的onCreateView()方法返回一个View,则这个View将替代在Activity布局中的<fragment />。
②通过代码方式添加
此方法必须用到FragmentTransaction来添加Fragment。
FragmentTransaction ft =getFragmentManager().beginTransaction();
ft.add/replace(intResourceId,
Fragment fragment, String tag);
第一个参数为放置Fragment的布局位置,可选择的添加,Fragment被嵌套在该布局之中。
第三个参数可选择的添加,用来标识Fragment的tag。
注意: add或者replace的方法中的参数没有只有Fragment的一个参数的情况。
4)在Activity中添加没有UI的Fragment
应用场景:???①不需要实现onCreateView()的方法
②使用FragmentTransaction实例的add(Fragment fragment, String tag)添加进Activity,需要给执行后台的没有UI的Fragment设置一个tag,因为没有UI的Fragment没有资源ID。
5)Fragment与Activity通信
应用场景:A. Fragment与Activity传递数据
B. Fragment与Fragment之间传递数据,由于Fragment之间不能直接通信,需要间接与Activity通信。
①Activity-->Fragment
在创建Fragment之后,将Fragment添加进Activity之前,调用fragment实例的setArguments(Bundle bundle)的方法,将数据传递到Fragment中。
②Fragment-->Activity
步骤:
A. 在Fragment中创建一个回调接口
B. 让包含此Fragment的Activity实现该接口
C. 在Fragment的onAttach(Activity activity)的方法中,得到实现了回调接口的Activity
D. 在Fragment中设置触发事件,来通过Activity调用实现的回调接口的方法
6)FragmentManager、FragmentTransaction与BackStack
① FragmentTransaction可调用addToBackStack(null),将已add进Activity的Fragment加入到BackStack中,在commit()之前调用。② FragmentManager可调用popBackStack(),将在BackStack栈顶的Fragment弹出BackStack并销毁。这过程相当于用户点击返回键。
除此之外,FragmentManager还可通过addOnBackStackChangedListener()监听BackStack变化的情况。
7)Fragment获取Context对象
Fragment可通过getActivity()来获得其所附上的Activity。注意:如果Fragment未附上Activity,或者Fragment生命周期结束从Activity分离时(一般是后者的情况),调用getActivity()返回的是null。
相关文章推荐
- 虚拟机中centos磁盘扩容
- android launcher3拖拽事件响应解析长按事件处理
- FTP命令详解
- android 阿拉伯,波斯字符串从右到左显示问题
- Longest Common Prefix
- bootstrap中的缩略图
- Inspiron 14 7000 系列 (7447) 游匣14 拆机图
- android项目获取sim卡序列号
- Web开发须知:URL编码与解码
- VM.SWAPPINESS=0在最新内核中可能会OOM,MYSQL被意外KILL
- 数据流补全脚本
- 我的参考
- oracle命令之oracle用户
- 【java基础】Java邮件开发
- gitbook使用手册
- PAT练习基础编程题目之求自定类型元素的平均
- Android setOnTouchListener识别滑动手势
- EBS R12.2应用层关闭脚本的执行过程
- 平行分类账的数据写入CO
- iframe顶部跳转跨域问题