一个活动或单独活动中的多个片段

Posted

技术标签:

【中文标题】一个活动或单独活动中的多个片段【英文标题】:Multiple fragments in one activity or separate activities 【发布时间】:2014-07-27 21:20:50 【问题描述】:

我一直在阅读这个article(顺便说一句),它说明了这一点

要使用片段创建不同的布局,您可以:

使用一个 Activity,它在平板电脑和手机设备上显示两个片段。 在这种情况下,您将在 必要时活动。这要求片段不是 在布局文件中声明,因为这样的片段不能在 运行时。

使用单独的活动在手机上托管每个片段。例如,当平板电脑 UI 在一个活动中使用两个片段时,使用 手机的相同活动,但提供了另一种布局 只包含一个片段。当需要切换片段时,启动 托管另一个片段的另一个活动。

第二种方法是最灵活且通常更可取的方法 使用片段。在这种情况下,主要活动检查是否 细节片段在布局中可用。如果详细片段 在那里,主要活动告诉片段它应该更新 本身。如果细节片段不可用,则主要活动 开始详细的活动。

这让我开始思考,因为我认为第一个选项会更好。 (我在其他教程的其他地方看到过类似的文字)

使用第一个选项,无论方向/设备类型是否一致,您都可以始终控制课堂上的状态

第二个可能涉及另一个活动。在我看来,这可能有点代码味道,因为这意味着您最终会得到 if/else 语句,这些语句可能会创建一个单独的活动并且逻辑会被传播。

我是 android dev 的新手,所以我真的很喜欢这里的意见。我错过了什么吗?

谢谢

【问题讨论】:

这取决于您在两者之间需要/想要多少交互。一般来说,在第二种情况下,活动大多只是片段周围的外壳,因此所有逻辑都真正封装在片段中。您只需要一种方法来检查当前布局中是否存在第二个片段容器并相应地分支。 我对使用一项活动感到积极。这不是一个很好的论点,但我可以更好地处理从一个片段到另一个片段的导航。 backStack 事情变得更容易了。我认为 Karakuri 是对的,这取决于您需要的互动。 感谢您的 cmets @Karakuri。但有一件事是,你不会有一些片段相互交流很多,而其他片段则没有。在这方面保持一致不是更好吗?还是没有真正的社区规则? 【参考方案1】:

老实说,这是您的选择。一般来说,当片段出现时,它是一种为平板电脑创建多窗格和为手机创建单活动片段的方法。惯例已经改变,手机和平板电脑可以使用它们来生成更多单一职责视图。只要你遵循 SOLID/Good OO 应该没问题。只需坚持您为应用选择的样式即可。

【讨论】:

以上是关于一个活动或单独活动中的多个片段的主要内容,如果未能解决你的问题,请参考以下文章

带有多个片段的活动中的 FloatingActionButton?

活动和片段中的多个谷歌地图

Kotlin 相同片段多个活动

如何在活动和片段之间传递对象

从意图活动访问片段方法

带有片段的两个面板 UI 与单独的活动