【问题标题】:Fragment/Activity Best Practice片段/活动最佳实践
【发布时间】:2017-03-01 05:38:43
【问题描述】:

我按照以下方式设置我的应用程序,我很好奇它是否被认为是“最佳实践”。我有两个活动和两个片段。 Activity 1 启动并立即使用 Fragment 1 显示项目的 RecyclerView。在 Fragment 中点击一个 Item,通过一个接口传回 Activity,发生一些逻辑,启动 Activity 2,它立即使用 Fragment 2 显示所选项目的详细信息。

我这样做是因为 A)我喜欢应用程序中活动的逻辑流程,以及 2)我需要创建可以使用两个片段来填充屏幕的平板电脑布局。

我看这个东西的次数越多,我在想为什么不简单地有 1 个 Activity 来管理这两个 Fragment? Activity 1 启动 Fragment 1,item 被点击,info 回到 Activity,FragmentManager 将 Fragment 1 替换为 Fragment 2。

我的问题是其中一种方式更符合“最佳实践”,还是两者都很好,这是一个选择问题?

【问题讨论】:

  • 天啊……你发现了一个潘多拉魔盒。这里没有对错。两者都可以。出于无数原因,我个人尽量避免使用碎片。但是,如果您有平板电脑布局,您会想要使用它们。关于是 1 Act 2 Frags 还是 2 act 2 Frags,在大多数情况下,这更多是个人选择。任何一方都没有“很多优点/缺点”,具体取决于您的最小/最大 API 等等。如果您有 2 个活动已经开始,那绝对没有问题。
  • 如果您使用“presenters”和/或依赖注入,那么您可以卸载活动/片段之外的大量“逻辑”,这意味着您拥有的东西更重要,只要因为您的活动或片段仅负责处理“视图”,并且每次发生任何事情时,您都会告诉您的“演示者”处理它(与活动/片段进行通信)等等。

标签: android android-fragments


【解决方案1】:

除了与列表无关的数据以及单击该列表时会发生什么之外,您还没有将问题描述得足够清楚,无法使用多个 Activity。

您描述的是"master-detail" flow,这是一个活动和两个(或更多)片段的一个很好的用例 - 一个列表+一些详细信息页面。当您可以show those Fragments side-by-side 时,这在更大的屏幕上尤其有意义。

例如,您可以拥有一个包含导航屏幕(无论是选项卡、抽屉还是底部视图)的 Activity,然后您在其中导航到的所有内容都是一个 Fragment。

否则,您将重定向到一些“设置”页面,例如,这是一个新的 Activity,它在您的 UI 中显示“Single responsibility principle”。

【讨论】:

    【解决方案2】:

    您可以使用单个活动 - 多个片段。您也可以使用 bundle 在片段之间传递数据。选择的事项还取决于用例。但是片段被用作轻量级的活动,它需要的资源比活动少。大部分事情都可以通过片段实现。因此,除非不需要使用活动,否则我会选择单个活动 - 多个片段。

    【讨论】:

    • > “需要更少资源的轻量级活动” - 这是什么来源? Fragment 在幕后也需要很多东西,如果 FragmentManager 如此渴望的话,我敢于看到它们比活动更长寿……
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 2023-04-08
    • 2021-11-30
    相关资源
    最近更新 更多