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