片段或支持片段?

时间:2013-06-25 10:57:00

标签: android android-fragments android-support-library

我正在开发支持Android> = 4.0的应用。它使用android.app包中的片段。由于我遇到了4.0中较旧的片段实现的问题,如this one,已经在支持库中修复了,我正在考虑从支持库切换回片段实现,以获得更可靠和一致的实现

您对此有何看法?在开发Android 4时,您是否正在使用支持库中的片段,即使它们已经可用?

5 个答案:

答案 0 :(得分:90)

根据我的经验,在所有Android设备上使用相同的片段实现是一个很大的优势。当使用本机片段在Android 4.0上保存状态时,我无法摆脱所有NullPointerExceptions,支持库都已消失。到目前为止,我还没有看到任何这种方法的缺点。

所以我现在对自己的问题的回答是:在为Android 4.x开发时,使用支持库中的片段是一个好主意。支持库修复了一些错误,这些错误仍然存​​在于较旧的片段实现中,并且经常更新错误修复。

答案 1 :(得分:40)

坚持SupportFragment一段时间的一个重要原因是,在API 17之前,您无法访问ChildFragmentManager。支持库将为您提供子片段管理器的支持版本

如果您有包含其他片段的片段,这将变得非常重要。这在平板电脑应用程序中很常见,具有很高的复杂性和/或您的整体架构基于选项卡式布局或使用导航抽屉。

答案 2 :(得分:21)

尽管已经定位了Android 4.0+,但我还是不得不考虑支持库,但似乎是官方推荐的:

  

Android支持库包中包含多个库   可以包含在您的申请中。这些库中的每一个都支持   特定范围的Android平台版本和功能集。

     

本指南介绍了重要功能和版本支持   由支持库提供,以帮助您决定您中的哪一个   应该包括在你的申请中。 一般情况下,我们建议包括   v4支持和v7 appcompat库,因为它们支持广泛   Android版本范围,并为推荐用户提供API   界面模式。

http://developer.android.com/tools/support-library/features.html

答案 3 :(得分:4)

恕我直言,如果您计划仅开发4.0版,我建议使用本机库,因为可执行文件会变小。确实,您可能会遇到早期版本中的错误问题,但我认为其中大部分应该是相当简单的解决方法。此外,兼容性库应该映射到本机片段,以防您在4.0及更高版本上运行。所以你最终可能不得不为这些问题而斗争。 支持库的问题在于你有很多类出现2x(一次在支持包结构中,一次在“native”包结构中),这使得开发变得更加麻烦。

但是,如果您还希望在4.0之前发布应用程序,则无法绕过支持库。此外,由于2.3中有大约38%的用户,因此包含此操作系统版本可能具有商业意义。在这种情况下,您可以将支持库与Jake Wartons ActionBarSherlock结合使用(或者在最终发布后使用googles支持ActionBar库)。

答案 4 :(得分:2)

现在似乎最好使用支持库,因为我在此处看到了https://developer.android.com/reference/android/app/Fragment.html

的声明
  

此类在API级别P中已弃用。使用支持库   片段表示所有设备的一致行为和访问权限   的生命周期。