Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 碎片还是支撑碎片?_Android_Android Fragments_Android Support Library - Fatal编程技术网

Android 碎片还是支撑碎片?

Android 碎片还是支撑碎片?,android,android-fragments,android-support-library,Android,Android Fragments,Android Support Library,我正在开发一个支持Android>=4.0的应用程序。它使用android.app包中的片段。由于我在4.0中面临旧片段实现的问题,例如,支持库中已经修复的问题,我正在考虑从支持库切换回片段实现,以获得更可靠和一致的实现 你对此有何看法?在为Android 4开发时,您是否使用支持库中的片段,即使它们已经可用?IMHO如果您计划仅为4.0开发,我建议您使用本机库,因为可执行文件将变得更小。的确,您可能会在早期版本中遇到bug问题,但我认为这些问题中的大多数都应该是很容易解决的。此外,兼容性库应该

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


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

IMHO如果您计划仅为4.0开发,我建议您使用本机库,因为可执行文件将变得更小。的确,您可能会在早期版本中遇到bug问题,但我认为这些问题中的大多数都应该是很容易解决的。此外,兼容性库应该映射到本机片段,以防您在4.0或更高版本上运行。所以你可能最终不得不与这些问题斗争。 支持库的问题是,您有很多类出现2x(一次出现在支持包结构中,一次出现在“本机”包结构中),这使得开发有点麻烦


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

根据我的经验,在所有Android设备上使用相同的片段实现是一个巨大的优势。当使用本机片段在Android 4.0上保存状态时,我无法消除所有NullPointerException,因为支持库中的这些异常都消失了。而且,到目前为止,我看不出这种方法有任何缺点


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

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


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

我也对必须包含支持库感到沮丧,尽管目标是Android 4.0+——但官方似乎建议:

Android支持库包包含几个 可以包含在您的应用程序中。每个库都支持 一系列特定的Android平台版本和功能

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


现在使用支持库似乎更好,因为我在这里看到了这条语句

该类在API级别p中已被弃用。请使用支持库 用于在所有设备上实现一致行为并访问 生命周期


这是一个很好的问题(+1,因为它让我好奇)。网络上对此也没有很好的解释。我正在为我的应用程序使用支持库,我想知道我是否错了,因为我在编译或测试过程中没有注意到任何错误。@brillenheini的回答animuson证明这不是一个主要基于意见的回答。谢谢你的回答。因为我需要ViewPager,所以我必须包含支持库。此外,如果可用,支持片段不会尝试切换到本机实现。这就是他们所说的。是的,(正如@brillenheini所说)要想拥有ViewPager,你需要v4,所以即使你只针对v13+设备,你也可能最终拥有v4。我刚刚发现,在我的API 21和应用程序中也需要v4(ViewPager需要v4)。Meh:-/那么,
android.app.Fragment
的目的是什么呢?如果你能在回答中再加上一点解释,我会非常满意的。谢谢@乔恩斯塔夫:原因可能是历史性的。请看我的更新答案。为了完整起见,似乎有些事情是支持片段无法做到的(例如,即使实际的目标操作系统支持它)。如果您使用的是
ViewPager
,这意味着您必须使用v13支持库中的适配器,否则您不能同时使用ViewPager和翻转动画。另外,请注意,截至2014年8月,v13库无法执行嵌套片段。为什么谷歌的员工选择在iosched应用程序中使用v13库,他们一定有一些理由,这应该是公认的答案,尽管@brillenheini自己提供了答案。它以最佳的准确性和简洁性回答了这个问题。