什么时候应该在Android应用程序中使用片段? 为什么要使用碎片?

我知道为什么要使用片段,Android开发人员网站很好地解释了这一点。 但在大多数情况下,我希望平板电脑上的不同部分具有自己的特殊行为和UI,我不知道分段如何提供帮助。 在大多数情况下,我认为创build2个不同的活动(1个用于平板电脑,1个用于手机)并且在第三个分类中分享共同的行为和事件会更快。 所以记住这个为什么我应该使用碎片?

在我看来,片段更像是UI的好处。 用户有时在同一个屏幕上看到两个不同类别的两个不同的视图是很方便的。 如果在创造性的时刻,你决定用一个列表视图来显示你的应用程序是很好的,例如,一个占用一半屏幕的listView和一个占据另一半的webView – 这样当你点击一个列表项时片段A将意图传递给片段B中的webView,并突然看到您刚刚单击而没有进行应用程序切换活动 – 然后您可以使用片段。 这只是我头脑中想到的一个例子。

底线:片段是同时在屏幕上的两个或更多的活动。

我使用片段时看到的好处是:

  • 逻辑封装。
  • 更好地处理片段的生命周期。
  • 在其他活动中可重用。

我看到的缺点是:

  • 更多代码(例如,实例化片段pipe理器,添加片段事务,编写片段的callback)
  • 片段和活动之间的交stream比较困难。 正如@jonney所说的那样,你需要处理一个parcelable接口来序列化你想传递的对象。

所以,当决定使用片段时,我会问自己以下问题:

  • 片段的生命周期是否与活动的生命周期不同?

如果生命周期不同,则可以使用片段更好地处理生命周期。 例如,如果你想破坏这个片段,而不是这个活动。 当你有一个寻呼机适配器时,情况就是如此。

  • 片段是否会被用于几个活动?

如果使用片段,用户input事件将是可重用的。

  • 片段和活动之间的通信量是否很小?

如果您需要将大对象传递给片段,则需要处理序列化它们的代码。 另外,如果您需要在片段和活动之间进行通信,则可能需要实现接口。 这在大多数情况下增加了代码库的复杂性。 这不是一个差异制定者,而是一个考虑的标准。

谷歌build议你总是使用片段。

为什么? 这很简单:

在最简单的情况下,碎片被用作活动的容器。

你为什么需要这个? 再次,这很简单。

Android 4(ICS)支持智能手机和平板电脑。 这意味着SAME应用程序将在智能手机和平板电脑上运行,并且可能会非常不同。

平板电脑有大屏幕将是空的或未使用 – 除非你正确地分配它。

这意味着 – 将两个片段放在联系人列表和联系人信息之类的一个活动中。

smatphone将显示联系人列表,并在触摸屏上显示联系人的信息。

在平板电脑上,用户仍然可以看到列表,信息将在旁边。

2个片段 – 在一个屏幕上….

聪明? 是的…应该回到兼容Android 1.6 ……


################################################## ###########

好的,已经知道了吗? 然后 – 只是试图了解案件解决:

许多事情都是这样工作的 – 列表和细节,菜单和子菜单,信息,详细信息和一些更详细的信息。 你想要一种方式来保持平板电脑的自然和平滑,你希望这样做,但不能指望智能手机显示它像平板电脑一样…

得到它?

欲了解更多信息,请看看这个。 我真的认为你只需要抓住这个概念….

专家会告诉你:“当我看到用户界面时,我会知道是否使用ActivityFragment ”。 一开始这没有任何意义,但是到时候,你实际上可以告诉你是否需要Fragment

有一个很好的做法,我发现对我很有帮助。 当我试图向我的女儿解释一些事情的时候,我想起了这件事。

也就是说,想象一个代表屏幕的盒子。 你可以加载另一个屏幕在这个盒子? 如果你使用一个新的盒子,你将不得不从第一个盒子复制多个项目? 如果答案是肯定的,那么你应该使用片段,因为根Activity可以容纳所有重复的元素,以节省你创build它们的时间,你可以简单地replace部分框。

但是不要忘记 ,你总是需要一个盒子容器( Activity ),否则你的零件将被分散。 所以一个箱子里面有零件

注意不要误用盒子。 Android的UX专家build议(你可以在YouTube上find它们),当我们应该明确加载另一个Activity ,而不是使用片段(就像我们处理导航抽屉里有类别)。 一旦你对Fragments感到满意,你可以观看他们所有的video。 更是他们的强制性材料。

你现在可以看看你的用户界面,并找出是否需要一个ActivityFragment ? 你有新的观点吗? 我想你是。 🙂

从历史上看,Android应用程序中的每个屏幕都是作为单独的Activity来实现的。 这会在屏幕之间传递信息时产生一个挑战,因为Android Intent机制不允许在活动之间直接传递引用types(即对象)。 相反,对象必须是序列化的或全球可访问的引用可用。

通过使每个屏幕成为一个单独的片段,这个数据传递头痛是完全避免的。 片段始终存在于给定的活动的上下文中,并且始终可以访问该活动。 通过在Activity中存储感兴趣的信息,每个屏幕的片段可以简单地通过Activity访问对象引用。

https://softwareengineering.stackexchange.com/questions/244771/why-use-android-fragments

片段主要支持更多dynamic和大型UI平板如Tablet。因为平板电脑屏幕比正常的手机大得多。 有更多的空间来组合和交换UI组件。

片段允许这样的devise,而不需要View层次结构中的如此复杂的改变。

通过分割片段中的活动布局,我们能够在运行时修改活动的外观