片段

一个 Fragment 代表应用 UI 的一个可重用部分。片段定义并管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。片段不能独立存在。它们必须由活动或另一个片段托管。片段的视图层次结构成为主机视图层次结构的一部分或附加到主机视图层次结构。

模块化

片段通过允许您将 UI 分割成离散的块,将模块化和可重用性引入到活动的 UI 中。活动是放置应用用户界面周围全局元素(如导航抽屉)的理想位置。相反,片段更适合定义和管理单个屏幕或屏幕一部分的 UI。

考虑一个响应各种屏幕尺寸的应用。在较大的屏幕上,您可能希望应用显示静态导航抽屉和网格布局中的列表。在较小的屏幕上,您可能希望应用显示底部导航栏和线性布局中的列表。

在活动中管理这些变化很麻烦。将导航元素与内容分离可以使此过程更易于管理。然后,活动负责显示正确的导航 UI,而片段则以正确的布局显示列表。

Two versions of the same screen on different screen sizes.
图 1. 不同屏幕尺寸上同一屏幕的两个版本。在左侧,大屏幕包含一个由活动控制的导航抽屉和一个由片段控制的网格列表。在右侧,小屏幕包含一个由活动控制的底部导航栏和一个由片段控制的线性列表。

将您的 UI 分割成片段可以更轻松地在运行时修改活动的显示。当您的活动处于 STARTED 生命周期状态 或更高状态时,可以添加、替换或删除片段。并且您可以记录这些更改并在活动管理的后退栈中保留这些更改,以便可以撤消这些更改。

您可以在同一个活动中使用同一个片段类的多个实例,在多个活动中使用,甚至可以用作另一个片段的子片段。考虑到这一点,只需为片段提供管理其自身 UI 所需的逻辑。避免依赖或从另一个片段操作一个片段。

后续步骤

有关与片段相关的更多文档和资源,请参阅以下内容。

入门

更多主题

示例

视频