何时以及为什么我应该在 Android 应用程序中使用片段?

我经常需要我的应用程序的不同部分有自己的特殊行为和 UI,我不知道片段如何能够帮助。在大多数情况下,我认为创建两个不同的活动(例如,平板电脑1和手机1) ,并分享共同的行为和事件在第三类更快。

那么,记住这一点,我为什么要使用片段呢?

58772 次浏览

Google advises you to ALWAYS use Fragments.

为什么? 很简单:

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

你为什么需要这个? 再说一遍,很简单。

Android4(ICS)同时支持智能手机和平板电脑。这意味着同样的应用程序将运行在智能手机和平板电脑上,它们可能有很大的不同。

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

这意味着——将两个片段放在一个活动上,如联系人列表和联系人信息。

智能手机将显示联系人列表,并在触摸屏上显示联系人的信息。

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

两个片段-在一个屏幕上... 。

智能? 是的... 应该可以兼容安卓1.6..。


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

返回文章页面 O.K,已经知道了吗? 译者:

很多事情的工作方式-列表和细节,菜单和子菜单,信息,详细信息和一些更详细的信息。 你想要一种方式来保持平板电脑的自然和平滑,你希望以这种方式预先显示,但不能指望智能手机能像平板电脑那样全部显示出来..。

懂了吗?

要了解更多信息,请查看 < a href = “ http://developer.android.com/guide/subject/basic/Fragments.html”rel = “ norefrer”> this。 我真的觉得你应该明白这个概念..。

在我看来,片段更多的是一种 UI 优势。有时候,用户可以在同一个屏幕上看到两个不同类的两个不同视图,这很方便。如果,在你的创造力时刻,你决定用一个占据一半屏幕的 listView 和一个占据另一半屏幕的 webView 来显示你的应用程序,那么当你点击片段 A 中的一个列表项目时,它会向片段 B 中的 webView 传递一个意图,然后突然你看到你刚刚点击了什么,而没有应用程序切换活动——那么你可以使用片段。这只是我突然想到的一个例子。

Bottom line: Fragments are two or more activities on the screen at the same time.

我在使用片段时看到的 benefits是:

  • 逻辑的封装。
  • 更好地处理片段的生命周期。
  • Reusable in other activities.

The 缺点 I see are:

  • 更多代码(例如,实例化片段管理器,添加片段事务,编写片段的回调)
  • 片段和活动之间的通信更加困难。正如 @jonney所说,您需要处理一个可包装的接口来序列化您希望传递的对象。

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

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

如果生命周期不同,则可以使用片段更好地处理生命周期。例如,如果您希望销毁片段,但不希望销毁活动。当你有一个 寻呼机适配器寻呼机适配器时,情况就是这样。

  • 该片段是否将用于多种活动?

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

  • 片段和活动之间的通信量小吗?

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

从历史上看,Android 应用程序中的每个屏幕都是作为一个单独的活动实现的。这给在屏幕之间传递信息带来了挑战,因为 Android 意图机制不允许在 Activity 之间直接传递引用类型(即对象)。相反,对象必须序列化,或者提供全局可访问的引用。

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

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

片段主要支持更多的动态和大的 UI 屏幕像平板电脑。因为平板电脑屏幕比普通手机大得多。还有更多的空间组合和交换 UI 组件。

Fragment allow such design without the need for such complex change in the View hierarchy.

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