【发布时间】:2014-01-10 17:21:59
【问题描述】:
我们最近将一款应用从基于多个 Activity 的应用转换为具有单个 Activity 和多个片段的应用。成为 Fragment 的 Activity 用于包含 Fragment 本身,因此我们使用子 Fragment 管理器来托管 Fragments 中的 Fragment(我应该添加的这些子 Fragment 很小,一次屏幕上可能有 4 或 5 个)。
这导致了一些问题,即必须为片段持有者创建和跟踪唯一 ID。 (这在处理 Backstack 以及任何类型的 AdapterView 中都会引起头痛)。
我们正在考虑重写这些组件以扩展某种 ViewGroup,可能是 FrameLayout 或 LinearLayout。无论如何,在某些情况下我们已经这样做了,但我想知道这样做是否有任何缺点?(我必须承认,我真的不认为 Fragments 有什么大不了的...任何你可以用 Fragments 做的事情,你都可以通过创建一个自定义视图来做。这是错误的吗?)。
【问题讨论】:
-
好吧,就它们而言,片段不必附加视图,因此它可以用作后台工作者,也可以在许多活动中重用。我不知道这是否意味着你错了,我想你可能是对的,片段是可选的。我知道,正如您可能刚刚发现的那样,事后添加它们是地狱。
-
@BobbyDigital - 我已经看到该解释被引用了几次(re:片段的可选视图,因为它们可以用于后台操作),但这有什么比POJO,或者扩展 AsyncTask 的类,如果这是必需的?
-
你找到我了。我认为这实际上是做事的“标准”方式。我正在从一本强调始终使用它们但基本上说它是“现实生活”中最常用的模式的书中学习 android,而不是因为尝试稍后添加它们而跌跌撞撞地从一开始就这样做。所以我的扩展 SingleFragmentActivity 类的活动除了
return new MyFragment();什么都不做。 ?? -
我真的不认为 Fragments 有什么大不了的……任何你可以用 Fragments 做的事情,你都可以通过创建一个自定义视图来做。 - 重要的是片段是您由 SDK 支持的。仅使用自定义视图,您需要处理所有事情,就我个人而言,我会发现使用片段并使其工作更麻烦。
标签: android android-fragments android-activity