Fragment概述

  1. Fragement 概述
    Fragement 与 Activity 生命周期关系: Fragement 嵌入到 Activity 组件中才可以使用, 其生命周期与 Activity 生命周期相关.
    –stop 与 destroy 状态: Activity 暂停 或者 销毁的时候, 其内部嵌入的所有的Fragement 也会执行 暂停 或者 销毁操作;
    –活动状态: 只有当 Activity 处于活动状态的时候, 我们才能操作 Fragement;
    Fragement 特征:
    –Fragement 与 Activity 交互: Fragement 调用getActivity()获取其 所嵌入的 Activity, Activity 获取FragementManager 的findFragementById() 或 findFragementByTag()获取 Fragement;
    –Activity 增删 Fragement: Activity 调用 Fragement 的add(),remove(),replace()等方法 添加 删除 替换 Fragement;
    –Fragement 与 Activity 对应关系: 一个 Activity 中可以嵌入多个 Fragement, 一个 Fragement 可以嵌入多个 Activity;
    –生命周期受 Activity 影响: Fragement 的生命周期 受 Activity 生命周期控制;
    Fragement 作用: Fragement 是为了 Android 中 平台电脑 UI 设计, 开发者不用设计 非常负责的 界面, 只需要设计好模块, 对UI 组件进行分组和模块化的设计和开发, 简化了 UI 组件;
    Fragement 可复用性: 同一个 app 应用, 可以在不同的 Activity 中加载同一个 Fragement;
  2. Fragement 类 和 方法介绍
    (1) Fragement 相关类介绍
    Fragement 子类:
    –DialogFragement: 对话框界面的 Fragement, 显示一个浮动的对话框, 这个对话框可以方便的与 Activity 进行交互, Activity 可以管理这个 Fragment;
    –ListFragement: 列表界面的 Fragement, 显示一个条目列表, 该列表可以设置一个适配器, 提供了许多管理 列表的函数;
    –PerformanceFragement: 选项设置界面的 Fragement, 该Fragment 创建 类似与 设置 应用程序时很管用;
    –WebViewFragement: WebView 界面的 Fragement;
    (2) Fragement 生命周期相关方法介绍
    onCreate():
    onCreate(Bundle savedInstanceState)
    –回调时机: 在创建 Fragement 的时候回调;
    –参数解析: Bundle savedInstance,用于保存 Fragment 参数, Fragement 也可以 重写 onSaveInstanceState(Bundle outState) 方法, 保存Fragement状态;
    –执行的动作: 获取 Frgement 显示的内容, 以及启动Fragment 传入的参数, 调用 getArguments() 获取键值对;
    onCreateView():
    onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState);
    –回调时机: Fragement绘制界面组件的时候回调, 该方法返回 View, 这个View就是 Fragement 本身;
    –参数解析: inflater 布局加载器, 是上下文传入, 不用自己创建; container 加载组件的父容器;
    –执行的操作: 使用 inflate 布局加载器加载布局文件, 并未组件设置显示的值;
    onPause():
    –回调时机: Fragement 暂停的时候, 即进入后台的时候 回调;
  3. Fragment 创建
    Fragment 创建:
    –参数准备: 创建一个 Bundle 对象, 并向其中设置参数 :
    Bundle bundle = new Bundle(); bundle.putString(“key”, “value”);
    –创建 Fragment 对象: 使用 new MyFragment() 创建对象, 并 调用 myFragment.setArguments(bundle) 方法传入参数;
    MyFragment myFragment = new MyFragment();myFragment.setArguments(bundle);
    Fragment嵌入Activity方式: Fragment 添加到 Activity 中才能显示, 以下是将 Fragment 嵌入 Activity 的方式;
    –布局文件嵌入: 在布局文件中 使用元素, 通过定义android:name = “com.example.MyFragment”属性指定 Fragment 类;
    –代码方式嵌入: 调用 FragmentTransaction 对象的 add() 方法向 Activity 中添加 Fragment;
  4. Fragment 与 Activity 通信
    Fragment 获取 Activity: 调用 Fragment 对象的 getActivity()方法, 即可获取 Fragment 嵌入的 Activity 对象;
    Activity 获取 Fragment:
    –Fragment 属性: 在布局文件中, 可以为元素指定 android:id 和 android:tag 属性;
    –获取方法: 调用 Activity 的 findFragmentById(int id) 或者 findFragmentByTag(String tag)方法;
    Fragment 向 Activity 传递数据: 将 Activity 当作接口子类对象, Fragment 中调用 Activity 中的接口方法;
    扩展:android fragment详解 / android开发fragment / android项目开发详解
    –Fragment 定义接口: 在 Fragment 内部定义一个Callback 接口;
    –Activity 实现该接口: MyActivity extends Activityimplement MyFragment.Callback;
    –Fragment 中获取该接口对象: 在Fragment 中定义一个 Callback 全局变量, 然后在 onAttach(Activity activity) 方法中, 将activity 强转为 Callback 对象;
    –调用接口方法: 上面获取了 Callback 对象, 即Activity对象, 调用 Activity 中的接口方法, 就能在 Fragment 中调用 Activity 对应的方法了;
    Activity 向 Fragment 传递数据:
    –创建 Bundle 数据包: 创建一个 Bundle 对象, 把要存放的键值对 放到这个对象中;
    –设置 Bundle 对象给 Fragment: 调用 Fragment 对象的 setArguments(Bundle bundle) 方法, 将 Bundle 对象设置给 Fragment;
  5. Fragment 事务管理
    FragmentManager 功能: FragmentManager 对象 可以通过 activity.getFragmentManager()获取;
    –获取指定 Fragment: 通过 findFragmentById() 或者 findFragmentByTag() 方法获取指定 Fragment;
    –弹出栈: 通过调用 popBackStack(), 将 Fragment 从后台的 栈 中弹出;
    –监听栈: 通过调用 addOnBackStackChangeListener 注册监听器, 监听 后台栈变化;
    FragmentTransaction 对象获取途径:
    –获取 FragmentManager 对象: 调用 Activity 的getFragmentManager()获取 FragmentManager 对象;
    –获取 FragmentTansaction 对象: 调用 FragmentManager 对象的beginTransaction()方法获取 FragmentTransaction 对象;
    FragmentTransaction(Fragment 事务)作用: 对 Fragement 进行 增, 删 , 改 操作需要 FragmentTransaction 对象进行操作, 开启 这个事务, 获取 事务对象, 然后执行对 Fragment 的操作, 最后提交事务;
    –开启事务: 调用 Fragement 对象的beginTransaction()方法可以获取 FragementTransaction 对象;
    –操作碎片: FragmentTransaction 对象 中 包含了add(), remove(), replace()等方法;
    –提交操作: 当执行完 Fragement 的操作之后, 可以调用 FragementTransaction 对象的commit()方法提交修改;
    addToBackStack()方法作用: 该方法是 FragementTransaction 的方法, 在提交事务前调用该方法, 可以将 事务中执行的操作 添加到 back 栈中, 用户按下 回退键,修改过的 Fragement 会 回退到 事务执行之前的状态;
  6. Fragment 生命周期
    (1) Fragment 状态
    活动状态: Fragment 处于前台,可见,可以获取焦点;
    暂停状态: Fragment 嵌入的Activity 也处于暂停状态, 即 Fragment 处于后台,可见,失去焦点;
    停止状态: Fragement 嵌入的 Activity 处于停止状态,不可见,失去焦点;
    销毁状态: Fragement 所在的 Activity 被销毁, 执行了 onDestroy() 方法, 此时 Fragement 被完全删除;
    生命周期

作者:陈龙
链接:Fragment概述

展开阅读全文

没有更多推荐了,返回首页