Fragment详解

一般手机开发,用到fragment的情况很多,主要有以下两种用法

  1. 平板与手机的运用
  2. 抽出相应模块复用

一、Fragment的使用

(一)静态使用

1.大致流程

  1. 继承fragment(app包下的),重写onCreateView()回调方法 设置Fragment的布局
  2. 在Activity中声明Fragment 使用方式与view相同

2.创建和使用的步骤

  1. 创建子类继承fragment
  2. 重写onCreateView()方法,该方法主要定义fragment的布局,以view对象的形式返回fragment的视图
  3. 将fragment引入到Activity中

3.要点

  1. LayoutInflater 布局填充器或者加载器, 将xml文件转换成view对象
    方法:inflate(表示加载的xml文件资源,是否加入根布局)
  2. 直接在xml(activity的xml)中用fragment标签,用name指定自定义的fragment(类名)

(二)动态使用

1.大致流程

  1. 继承fragment(app包下的),重写onCreateView()回调方法 设置Fragment的布局
  2. 在Activity中创建Fragment的管理器对象
  3. 获取Fragment的事务对象并开启
  4. 调用事务的动态方法,动态地添加、删除、替换fragment
  5. 提交事务

2.创建和使用的步骤

  1. 创建子类继承fragment
  2. 重写onCreateView()方法,该方法主要定义fragment的布局,以view对象的形式返回fragment的视图
  3. 在Activity中创建FragmentManager

3.要点

  1. 事务:是一组不可再分割的操作集合。如:10行代码为1个事务,如果第9行报错,则前8行代码也不执行。

4.代码

//在Activity中创建Fragment的管理器对象
FragmentManager manager = getFragmentManager();

//获取Fragment的事务对象并开启
FragmentTransaction transaction = manager.beginTransaction();

//调用事务的动态方法,动态地添加、删除、替换fragment
//将TitleFragmnet动态添加到title_layout的位置(创建的为linearLayout这种布局)
transaction.add(R.id.title_layout,new TitleFragmnet());

//transaction.remove(arg0);  remove(需要移出的fragment对象);
//transaction.replace(arg0,arg1)  replace(表示替换fragment位置的资源id,替换fragment对象)  

//提交事务
transaction.commit();

(三)v4包下的使用

1.大致流程

  1. 继承fragment(v4下的),重写onCreateView()回调方法 设置Fragment的布局
  2. 在Activity(继承FragmentActivity)中创建Fragment的管理器对象(v4下)
  3. 获取Fragment的事务对象(v4下)并开启
  4. 调用事务的动态方法,动态地添加、删除、替换fragment
  5. 提交事务

2.创建和使用的步骤

  1. 创建子类继承fragment
  2. 重写onCreateView()方法,该方法主要定义fragment的布局,以view对象的形式返回fragment的视图
  3. 在Activity(继承FragmentActivity)中创建FragmentManager

3.要点

  1. 导包的统一性。

二、Fragment的生命周期

(一)三个主要方法

  1. onCreate()创建Fragment时调用
  2. onCreateView() 第一次绘制Fragment时调用,返回view对象
  3. onPause()用户离开Fragment时调用

(二)Activity的生命周期

  1. onCreate() 创建时
  2. onStart() 用户能看到时
  3. onResume() 获取焦点时
  4. onPause() 失去焦点时
  5. onStop() 被完全遮挡
  6. onRestart() 被重新打开
  7. onDestroy() 直接返回

(二)Fragment的生命周期

  1. onAttach() activity和fragment产生关联时回调的方法
  2. onCreate() fragment第一次被创建
  3. onCreateView() fragment第一次绘制界面
  4. onActivityCreated() 当前fragment所属的activity创建成功
  5. onStart() fragment能被用户看到时调用
  6. onResume() fragment能够接受用户事件
  7. onPause() 失去用户焦点
  8. onStop() fragment完全被遮挡
  9. onDestroyView() activity中的fragment被移除
  10. onDestroy() fragment被销毁
  11. onDetach() activity和fragment失去关联时回调的方法

(三)生命周期流程

1. 第一次打开

Activity onCreate()

Fragment onAttach() onCreate() onCreateView() onActivityCreated()

Activity onStart()

Fragment onStart()

Activity onResume()

Fragment onResume()

2. 屏幕熄灭

Fragment onPause()

Activity onPause()

Fragment onStop()

Activity onStop()

3. fragment切换消失

Fragment1 onPause() onStop() onDestroyView() onDestroy() onDetach()

4. fragment切换重现

Fragment1 onAttach() onCreate() onCreateView() onActivityCreated() onStart() onResume()

5. 后台打开

Activity onRestart() onStart()

Fragment onStart()

Activity onResume()

Fragment onStart()

6. 关闭

Fragment onPause()

Activity onPause()

Fragment onStop()

Activity onStop()

Fragment onDestroyView() onDestroy() onDetach()

Activity onDestroy()

参考:Fragment详解

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值