Fragment详解

来源:互联网 发布:苹果软件打不开要信任 编辑:程序博客网 时间:2024/06/16 21:17

一般手机开发,用到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详解

原创粉丝点击