总是使用v4 Fragments而不是内置的android.app.Fragment?

时间:2012-10-25 10:01:04

标签: android android-fragments

我遇到了ViewPager和相关的FragmentPagerAdaptor,它们不是常规Android软件包的一部分,但仅在V4支持包中提供。似乎我不能将FragmentPagerAdaptor与android.app.Fragment一起使用,因为FragmentPagerAdaptor需要v4 FragmentManager来实例化。阅读Difference between Activity and FragmentActivity这似乎是对齐的 - 使用v4 Fragments和相关类或常规android.app.Fragments。永远不要混。

进一步说,我认为根本不需要使用常规的android.app.Fragments,因为它们不如v4支持包强大。 (引自另一个问题:The Android Support package is not only for backports of newer APIs. It is also for other classes that, for whatever reason, are not being added to the SDK, such as ViewPager and its supporting classes.)。 "只有"我可以想到的缺点是v4支持库与APK捆绑在一起,这意味着我的应用程序将占用更多空间。

我是否正确地得出结论,我应该总是使用v4支持库来获取片段,因为它们包含更多功能? (而且它们是向后兼容的,不要忘记。)

2 个答案:

答案 0 :(得分:9)

我刚才意识到可以同时使用android.app.Fragmentandroid.support.v4.view.ViewPager ......如果您使用android.support.v13.app.FragmentPagerAdapter. ..那么似乎 v13 < / strong> support package解决/改进了android.app.Fragment和android.support.v4.view.ViewPager之间的兼容性问题。真是一团糟。

虽然这解决了我提出的特定示例,但我仍然想知道最好的选择是在可用时使用 v4 类而不是内置类(例如android)。 app.Fragment)即使我只担心ICS和更新的设备?

答案 1 :(得分:0)

就向后兼容性而言,确实使用v4支持包版本是最好的方法。

随着设备向具有内置功能的操作系统转移,可能会更容易使用SDK版本,因为支持包中的所有功能都将包含在SDK中。

目前,坚持使用v4为2.2 / 2.3设备提供支持,这些设备仍占据Android设备的大部分份额