一个片段的活动有啥意义吗?

Posted

技术标签:

【中文标题】一个片段的活动有啥意义吗?【英文标题】:Is there any point of an Activity with one fragment?一个片段的活动有什么意义吗? 【发布时间】:2014-11-30 13:44:18 【问题描述】:

我能找到在 android 活动中使用 Fragments 的所有原因都与能够在同一屏幕上显示多个类/视图、封装多个逻辑组件等有关。

考虑到这一切,似乎只有在您使用其中的许多片段时,片段才真正有用。

是这样吗?在一个活动中只使用一个片段有什么意义吗?

我现在问是因为我在 Android Studio 上看到了一个选项来做到这一点,我想知道重点是什么。

【问题讨论】:

没有匹配意义,你是对的。但是,您可以在其他活动中重复使用该片段 【参考方案1】:

出于我个人的意见,我会说是的

出于以下原因:

假设您熟悉 Fragments,那么创建 Fragment 几乎不需要额外的工作,而且具有以下好处 Fragments 可以轻松地在其他地方重复使用(可能是另一个拥有更多 Fragment 的 Activity,此外,Fragment 不一定需要用完全屏)。 Activity 转换更昂贵,Fragment 转换更复杂。 片段动画框架更好(在可用性和性能方面)。 我总是喜欢将活动的数量保持在最低限度,以保持 AndroidManifest.xml 简洁明了。 将 UI 分离为 Fragments 可以使代码结构更清晰,代码维护更容易。

根据 google 编码指南,最佳做法是创建尽可能少的 Activity,并创建多个 Fragment,而不是在 Activity 内切换。

【讨论】:

你的最后两点似乎很弱-第一点纯粹是个人喜好。关于第二个 - 你能解释一下添加一个额外的层是如何使代码更清晰、结构更好或更容易维护的吗?关于你的最后一句话——是的,建议不要创建额外的活动,但我们正在讨论一个只有一个片段的活动,所以这个论点不适用。 @Okas 好吧,有更多的活动会使 AndroidManifest 变得混乱,你不需要声明 Fragments。 @Zhuiden,在它们开始使 AndroidManifest 变得混乱之前,您确实需要进行大量活动。 :)【参考方案2】:

这取决于,如果您打算在另一个活动中使用该片段,是的,您有一个“点”,也许将来您可以在另一个活动中重复使用它,但在例如启动屏幕的情况下,没有意义。一切都取决于您想赋予应用程序的用途。

【讨论】:

【参考方案3】:

优点:

-> 可重用的代码

易于在任何模块中再次使用它 易于调试

-> 使用 setRetainInstance(true) 比活动更好地处理方向变化

-> 在将来扩展应用程序以支持多窗格布局或多屏幕支持时非常有帮助

缺点:

-> 如果您不熟悉片段,则开销很小且耗时

【讨论】:

幸运的是,片段并不那么复杂,基本上只是你在onCreate() 中的内容将在onCreateView() 中添加两行。 @Zhuinden:是的,很简单,只是我们需要正确处理fragment manager和backstack。

以上是关于一个片段的活动有啥意义吗?的主要内容,如果未能解决你的问题,请参考以下文章

活动和片段之间有啥区别?

android - 从活动调用完成会破坏托管片段吗?

有趣的 C++ 代码片段,有啥解释吗? [复制]

我应该用片段替换 Android 活动吗?

字符串插值和片段之间有啥显着区别吗?

滚动经过片段时,Angular 10会获得路由器活动片段吗?