Android 简明教程

Android - Fragments

以下是有关片段的重要要点:

  1. 片段有自己的布局和行为,以及自己的生命周期回调。

  2. 您可在活动运行时添加或移除活动中的片段。

  3. 您可将多个片段组合到单个活动中以构建多窗格 UI。

  4. 片段可在多个活动中使用。

  5. 片段生命周期与宿主活动的生命周期密切相关,这意味着在活动暂停时,活动中可用的所有片段也会停止。

  6. 片段可实现没有用户界面组件的行为。

  7. 在 API 版本为 11 的 Android Honeycomb 版本中,已将片段添加到 Android API。

通过扩展 Fragment 类创建片段,而且可以通过将片段声明为 <fragment> 元素在活动布局文件中,将片段插入到活动布局中。

在片段推出之前,我们的限制是,在某一时间点,我们只能在屏幕上显示单个活动。因而,我们无法分开设备屏幕和分别控制各个部分。但是,通过引入片段,我们获得了更大的灵活性,消除了同时在屏幕上只能进行一项活动的限制。现在,我们可以进行单独的活动,但每个活动都可以包括多个片段,这些片段将拥有自己的布局、事件和完整的生命周期。

以下是一个典型示例,说明如何将片段定义的两个 UI 模块组合到一个活动中以用于平板设计,并且针对手机设计将它们分开。

android fragments

当在平板大小设备上运行时,应用程序可在活动 A 中嵌入两个片段。但在手机大小的屏幕上,没有足够的空间容纳两个片段,因此活动 A 只包含文章列表片段,当用户选择一篇文章时,它将启动活动 B,其中包括第二个片段以阅读文章。

Fragment Life Cycle

Android 片段拥有自己的生命周期,与 Android 活动非常相似。本节概要介绍其生命周期的各个阶段。

fragment

以下是可以在片段类中覆盖的方法列表:

  1. *onAttach()*片段实例与活动实例关联。片段和活动尚未完全初始化。通常情况下,你可以在此方法中获取使用片段进行进一步初始化工作的活动的引用。

  2. onCreate() 系统在创建片段时调用此方法。你应初始化片段的基本组件,即在片段暂停、停止然后恢复时你要保留的片段。

  3. onCreateView() 系统在片段首次绘制其用户界面时调用此回调。为片段绘制 UI 时,你必须从此方法返回一个组件,该组件是片段布局的根组件。如果片段不提供 UI,可返回 null。

  4. *onActivityCreated()*在创建主机活动后,将调用 onActivityCreated()。已创建活动和片段实例,以及活动的视图层次结构。这时可以使用 findViewById() 方法访问视图。示例。在此方法中,你可以实例化需要 Context 对象的对象。

  5. *onStart()*一旦片段变为可见,便会调用 onStart() 方法。

  6. *onResume()*Fragment becomes active.

  7. onPause() 系统将此方法作为第一项指示,表示用户正在离开片段。通常,你应在此处提交应在当前用户会话之外保留的任何更改。

  8. *onStop()*通过调用 onStop() 使片段停止。

  9. *onDestroyView()*调用此方法后,片段视图将销毁。

  10. *onDestroy()*调用 onDestroy() 来执行片段状态的最终清理,但 Android 平台并不保证调用。

How to use Fragments?

这涉及创建片段的多个简单步骤。

  1. 首先,确定要在活动中使用多少片段。例如,让我们使用两个片段来处理设备的横向和纵向模式。

  2. 接下来根据片段数量,创建将扩展 Fragment 类的类。Fragment 类具有上述回调函数。你可以根据你的要求覆盖任何函数。

  3. 对于每个片段,你需要在 XML 文件中创建布局文件。这些文件将具有定义的片段的布局。

  4. 最后修改活动文件,按照您的要求定义替换片段的实际逻辑。

Types of Fragments

从本质上讲,片段分为三个阶段,如下所示。

  1. Single frame fragments − 单帧片段用于手持设备(如手机),在这里我们只能显示一个片段作为视图。

  2. List fragments − 具有特殊列表视图的片段称为列表片段

  3. Fragments transaction − 使用片段事务,我们可以将一个片段移动到另一个片段。