安卓学习笔记(三):Fragment片段 跟着API指南学习
来源:互联网 发布:某h站源码整站打包 编辑:程序博客网 时间:2024/06/06 05:29
1.Fragment
Fragment
表示 Activity
中的行为或用户界面部分。您可以将多个片段组合在一个 Activity 中来构建多窗格 UI,以及在多个 Activity 中重复使用某个片段。您可以将片段视为 Activity 的模块化组成部分,它具有自己的生命周期,能接收自己的输入事件,并且您可以在 Activity 运行时添加或移除片段(有点像您可以在不同 Activity 中重复使用的“子 Activity”)
片段必须始终嵌入在 Activity 中,其生命周期直接受宿主 Activity 生命周期的影响.
不过当 Activity 正在运行(处于已恢复生命周期状态)时,您可以独立操纵每个片段,如添加或移除它们。
您可以通过在 Activity 的布局文件中声明片段,将其作为 <fragment>
元素插入您的 Activity 布局中,或者通过将其添加到某个现有 ViewGroup
,利用应用代码进行插入。不过,片段并非必须成为 Activity 布局的一部分;您还可以将没有自己 UI 的片段用作 Activity 的不可见工作线程。
2.设计原理
通过将 Activity 布局分成片段,您可以在运行时修改 Activity 的外观,并在由 Activity 管理的返回栈中保留这些更改。
您应该将每个片段都设计为可重复使用的模块化 Activity 组件。
应用可通过重复使用不同组合的片段来同时支持平板电脑和手机:通过组合成一个 Activity 来适应平板电脑设计,通过单独片段来适应手机设计。
3.创建片段:
要想创建片段,您必须创建 Fragment
的子类(或已有其子类)。Fragment
类的代码与 Activity
非常相似。它包含与 Activity 类似的回调方法,如 onCreate()
、onStart()
、onPause()
和 onStop()。
至少应实现以下生命周期方法:
onCreate()
onCreateView()系统会在片段首次绘制其用户界面时调用此方法。 要想为您的片段绘制 UI,您从此方法中返回的
View
必须是片段布局的根视图。如果片段未提供 UI,您可以返回 null。
onPause()通常应该在此方法内确认在当前用户会话结束后仍然有效的任何更改(因为用户可能不会返回)。
三个子类的扩展:
DialogFragment
- 显示浮动对话框。使用此类创建对话框可有效地替代使用
Activity
类中的对话框帮助程序方法,因为您可以将片段对话框纳入由 Activity 管理的片段返回栈,从而使用户能够返回清除的片段。 ListFragment
- 显示由适配器(如
SimpleCursorAdapter
)管理的一系列项目,类似于ListActivity
。它提供了几种管理列表视图的方法,如用于处理点击事件的onListItemClick()
回调。 PreferenceFragment
- 以列表形式显示
Preference
对象的层次结构,类似于PreferenceActivity
。这在为您的应用创建“设置” Activity 时很有用处。
4.添加用户界面
onCreateView()
回调方法,Android 系统会在片段需要绘制其布局时调用该方法。您对此方法的实现返回的 View
必须是片段布局的根视图。【注:每个片段都需要一个唯一的标识符,重启 Activity 时,系统可以使用该标识符来恢复片段(您也可以使用该标识符来捕获片段以执行某些事务,如将其移除)。 可以通过三种方式为片段提供 ID:
- 为
android:id
属性提供唯一 ID。 - 为
android:tag
属性提供唯一字符串。 - 如果您未给以上两个属性提供值,系统会使用容器视图的 ID。】
ViewGroup。
您可以在 Activity 运行期间随时将片段添加到 Activity 布局中。您只需指定要将片段放入哪个 ViewGroup
。
添加没有 UI 的片段
add(Fragment, String)
从 Activity 添加片段(为片段提供一个唯一的字符串“标记”,而不是视图 ID)。 这会添加片段,但由于它并不与 Activity 布局中的视图关联,因此不会收到对 onCreateView()
的调用。因此,您不需要实现该方法。
6.管理片段
使用 FragmentManager,要想获取它,请从您的 Activity 调用 getFragmentManager()
。
您可以使用 FragmentManager
执行的操作包括:
- 通过
findFragmentById()
(对于在 Activity 布局中提供 UI 的片段)或findFragmentByTag()
(对于提供或不提供 UI 的片段)获取 Activity 中存在的片段。 - 通过
popBackStack()
(模拟用户发出的返回命令)将片段从返回栈中弹出。 - 通过
addOnBackStackChangedListener()
注册一个侦听返回栈变化的侦听器。
向 FragmentTransaction
添加更改的顺序无关紧要,不过:
- 您必须最后调用
commit()
- 如果您要向同一容器添加多个片段,则您添加片段的顺序将决定它们在视图层次结构中的出现顺序
片段可以通过 getActivity()
访问 Activity
实例,并轻松地执行在 Activity 布局中查找视图等任务。
同样地,您的 Activity 也可以使用 findFragmentById()
或 findFragmentByTag()
,通过从 FragmentManager
获取对 Fragment
的引用来调用片段中的方法。
9.创建对Activity的事件回调
10.
向应用栏添加项目addToBackStack()
显式请求保存实例时,系统才会将片段放入由宿主 Activity 管理的返回栈。片段还有几个额外的生命周期回调,用于处理与 Activity 的唯一交互,以执行构建和销毁片段 UI 等操作。 这些额外的回调方法是:
onAttach()
在片段已与 Activity 关联时调用(Activity
传递到此方法内)。onCreateView()
调用它可创建与片段关联的视图层次结构。onActivityCreated()
在 Activity 的onCreate()
方法已返回时调用。
onDestroyView()
在移除与片段关联的视图层次结构时调用。
onDetach()
在取消片段与 Activity 的关联时调用。只有当 Activity 处于恢复状态时,片段的生命周期才能独立变化。
不过,当 Activity 离开恢复状态时,片段会在 Activity 的推动下再次经历其生命周期。
- 安卓学习笔记(三):Fragment片段 跟着API指南学习
- 安卓学习笔记(二):Activity 跟着API指南学习
- 安卓学习笔记(四):加载器Loaders 跟着API指南来学习
- 安卓学习笔记(五):任务和返回栈 跟着API指南来学习
- 安卓学习笔记(六):Overview Screen 概览屏幕 跟着API指南来学习
- 安卓学习笔记(七):服务 跟着API指南来学习
- 安卓学习笔记(八):内容提供者 跟着API指南来学习
- 安卓学习笔记(八):进程和线程 跟着API指南来学习
- android api gui 学习笔记---Fragment(片段)
- android 学习笔记(一):Intent 和 Intent 过滤器 跟着API指南来学习
- 安卓学习笔记之Fragment
- xamarin学习笔记A07(安卓Fragment)
- 安卓API指南之Fragment回顾
- 安卓开发学习笔记(三)
- 安卓学习笔记三
- 安卓学习笔记三
- 跟着官方指南学习TensorFlow(序)
- Android学习之Fragment(片段)
- tensorflow安装(windows 64bit python2/python3共存)
- Linux命令基础35-ifconfig命令
- 单源最短路径——Dijkstra
- 学习C++ -> 向量(vector)
- autoreleasepool 原理解析
- 安卓学习笔记(三):Fragment片段 跟着API指南学习
- MySql drop database时报错:Error dropping database can't rmdir
- Mac os 下安装phpcms权限不足问题解决
- codevs 3287货车运输 (最大生成树+lca)
- WTForms标准字段和验证函数
- virtualenv--简单用法
- springmvc实现jsonp跨域接口访问
- 热释红外感应模块(pir d203s)介绍
- 文件压缩java