片段或支持片段?

bri*_*ini 125 android android-fragments android-support-library

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

你对这个有什么看法?在为Android 4开发时,您是否正在使用支持库中的片段,即使它们已经可用?

bri*_*ini 90

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

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

  • 那么`android.app.Fragment`的目的是什么呢?如果您可以将此添加到您的答案[此处](http://stackoverflow.com/questions/17553374/android-app-fragments-vs-android-support-v4-app-using-viewpager/),并提供更多解释,我会完全满意的.谢谢! (11认同)
  • 为了完整起见,似乎有支持片段无法做到的事情(例如[使用`objectAnimator`进行动画制作](http://stackoverflow.com/a/16734364/11683),即使实际的目标操作系统支持它也是如此) .如果您使用的是"ViewPager",则表示您必须使用v13支持库中的适配器,否则您不能同时拥有viewpager和翻转动画. (11认同)
  • 另外要小心,截至2014年8月,v13库无法做嵌套片段. (5认同)

Ros*_*ick 40

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

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


小智 21

尽管面向Android 4.0+,我也不得不包括支持库感到沮丧 - 但它似乎是官方推荐的:

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

本指南介绍了支持库提供的重要功能和版本支持,以帮助您确定应在应用程序中包含哪些功能.通常,我们建议包括v4支持和v7 appcompat库,因为它们支持广泛的Android版本并为推荐的用户界面模式提供API.

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