Fragement概述

xiaoxiao2021-02-27  183

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;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 暂停的时候, 即进入后台的时候 回调;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;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;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 会 回退到 事务执行之前的状态;Fragment 生命周期 (1) Fragment 状态 活动状态: Fragment 处于前台,可见,可以获取焦点; 暂停状态: Fragment 嵌入的Activity 也处于暂停状态, 即 Fragment 处于后台,可见,失去焦点; 停止状态: Fragement 嵌入的 Activity 处于停止状态,不可见,失去焦点; 销毁状态: Fragement 所在的 Activity 被销毁, 执行了 onDestroy() 方法, 此时 Fragement 被完全删除;
转载请注明原文地址: https://www.6miu.com/read-14024.html

最新回复(0)