gpt4 book ai didi

android - 为什么要使用 fragment ?

转载 作者:IT老高 更新时间:2023-10-28 13:16:43 26 4
gpt4 key购买 nike

使用 Fragment 与使用在不同布局中重复使用的自定义 View 相比有什么优势?

original blog post introducing fragments , 黛安·哈克伯恩说

[Fragments] make it easier for developers to write applications that can scale across a variety of screen sizes, beyond the facilities already available in the platform.

她继续在为应用程序制作平板电脑布局的上下文中解释 Fragments,该应用程序结合了来自同一应用的手机版本的两个 Activity 的 UI。

但似乎使用自定义 View 可以实现相同的重用。 fragment 和 View 之间的主要区别似乎是它们具有不同的生命周期......

Fragment 生命周期是:

onAttach()onCreate()onCreateView()onActivityCreated() onStart(), onResume(), onPause(), onStop(), onDestroyView(), onDestroy(), onDetatch().

View 生命周期是:

ctoronFinishInflate()onAttachedToWindow()onMeasure()onLayout( ), onDetatchedFromWindow()

我想听听有编写大型应用程序经验的开发人员介绍他们在使用 Fragment 与自定义 View 将 UI 划分为可重用的部分时看到了哪些好处(如果有的话)。

最佳答案

主要原因是 fragment 比自定义 View 更可重用。

有时,您无法仅依靠 View 来创建完全封装的 UI 组件。这是因为有些东西你想放入你的 View 但不能,因为只有 Activity 可以处理它们,从而迫使 Activity 和 View 之间紧密耦合。

这是一个这样的例子。假设您想要创建一个可重用的 UI 组件,其中包括想要捕捉照片并用它做一些事情。传统上,您会触发一个启动相机并返回捕获的图像的 Intent 。

请注意,您的自定义 UI 组件无法完全封装此功能,因为它必须依赖托管 Activity 的 startActivityForResult,因为 View 不接受 Activity 结果(它们可以通过上下文间接触发 Intent )。

现在,如果您想在不同的 Activity 中重用您的自定义 UI 组件,您将重复 Activity.startActivityForResult 的代码。

另一方面, fragment 干净地解决了这个问题。

同样,您的 fragment 可以为您的选项菜单添加项目,传统上只有 Activity 才能做到这一点。如果您的自定义 View 的状态决定了菜单中的内容,这可能很重要。

关于android - 为什么要使用 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com