片段

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

模块化

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

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

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

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

将 UI 分割成片段使在运行时修改活动的外观变得更容易。当您的活动处于 STARTED 生命周期状态 或更高状态时,可以添加、替换或删除片段。您可以将这些更改记录在由活动管理的回退栈中,以便可以撤销这些更改。

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

下一步

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

入门

进一步的主题

示例

视频