片段或支持片段?

我正在开发一个支持Android> = 4.0的应用程序。 它使用android.app包中的片段。 由于我正在面对4.0中较旧的片段实现方面的问题,就像这个已经在支持库中修复的那样,我正考虑从支持库切换回片段实现,以获得更可靠和一致的实现。

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

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

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

一段时间坚持使用SupportFragment一个重要原因是您直到API 17才能访问ChildFragmentManager 。支持库将为您提供子片段pipe理器的支持版本。

如果您有包含其他片段的片段,这将成为一个大问题。 这在平板电脑应用程序中很常见,复杂程度很高,而且/或者您的整体架构基于选项卡式布局或使用抽屉式导航器。

尽pipelocking了Android 4.0+,我还是不得不join支持库,但似乎已经正式推荐了:

Android支持库软件包包含可以包含在您的应用程序中的几个库。 这些库中的每一个都支持特定范围的Android平台版本和一组function。

本指南介绍了支持库提供的重要function和版本支持,以帮助您决定应将哪些应用程序包括在内。 一般来说,我们build议包括v4支持和v7 appcompat库,因为它们支持各种Android版本,并提供推荐用户界面模式的API。

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

恕我直言,如果你打算只开发4.0,我会build议去与本地库,因为可执行文件将变小。 确实,您可能会遇到早期版本中的错误,但是我认为这些错误大部分应该是相当微不足道的。 另外,兼容性库应该映射到本机片段,以防在4.0或更高版本上运行。 所以你可能最终不得不与这些问题纠缠在一起。 与支持库的问题是,你有很多类出现了2次(一次在支持包结构,一次在“本地”包结构),这使得开发有点麻烦。

但是,如果您还想在4.0之前发布您的应用程序,那么在支持库方面就没有办法了。 此外,由于2.3中所有用户中大约有38%的用户使用该操作系统版本,因此可能具有商业意义。 在这种情况下,您可以将支持库与Jake Wartons ActionBarSherlock结合使用(或者在最终发布后使用Google支持的ActionBar库)。