【问题标题】:Android.app Fragments vs. android.support.v4.app using ViewPager?Android.app Fragments 与 android.support.v4.app 使用 ViewPager?
【发布时间】:2013-07-07 08:43:35
【问题描述】:

我有一个关于 Android 支持库、片段的问题,作为一个具体示例,ViewPager 类。我的目的是创建一个与 Android 开发者网站(http://developer.android.com/training/animation/screen-slide.htmlhttp://developer.android.com/training/implementing-navigation/lateral.html)上提供的示例功能相似的应用程序。查看他们的代码,我注意到他们使用了android.support.v4.app 库,根据我的研究,这是访问ViewPager 类的唯一方法。

在我的情况下,我对向后兼容性没有兴趣。最低 API 级别为 14(冰淇淋三明治),构建目标为 4.2 Jelly Bean。在最简单的形式中,我的应用程序的性能与我在 Android 开发网站上链接的第二个演示完全相同 - 只需在三个选项卡之间滑动,每个选项卡都有内容。

我读过的所有文章/帖子/答案似乎都非常支持 v4 支持库。现在我的问题虽然冗长,但:

  1. 构建我的应用程序的最佳方式是什么 - 使用 android.support.v4.app,从而使用 SupportFragments,或者使用 android.app 中提供的片段 - 为什么?

  2. 如果来自android.app 的片段是要走的路,那么接近ViewPagers 的最佳方式是什么?

  3. 如果 SupportFragments 最适合该任务,我估计它们具有与另一个相同的功能 - 那么将它们放在 android.app 中的目的是什么?

希望有更清楚理解的人可以给我一点澄清,因为我很困惑......

【问题讨论】:

  • 你不能使用Fragments如果你使用的是ViewPager你需要使用支持库SupportFragment
  • SupportFragment 不是 Android SDK 中的类...
  • @Karakuri 很抱歉造成混乱;我不是指文字类SupportFragment,我只是指android.support.v4.app 中可用的Fragment 类。
  • @jonstaff 无论哪种方式,您都只能使用支持库中的片段类
  • @tyczj 谢谢,但这并不能真正回答问题。我正在寻找更多为什么,因为我已经知道android.app 中没有ViewPager

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


【解决方案1】:

您可以将ViewPagerandroid.app 包中的本机片段与android.support.v13.app 包中的适配器一起使用。为此,您必须使用 v13 支持 jar。

有两个版本的适配器可以与ViewPager 一起使用,v4 包中的那些用于支持片段,v13 中的那些用于原生片段。

现在有两个 Fragment 实现的原因是历史性的:android.app 包中的 Fragment 是在 Android 3 中仅针对平板电脑引入的,并且创建了支持库以将 Fragment 引入运行旧版本的手机。在 Android 4 上,两者都有。

根据我自己的经验,我建议使用支持片段,即使是在为 Android 4 开发时也是如此。以下是一些原因:Fragment or Support Fragment?

【讨论】:

  • support.v13 适用于 ViewPager ...直到您尝试在 DialogFragment 中使用 ViewPager :-(
  • android.app 没有FragmentPagerAdapter 那么就无法将viewpager与android.app.Fragment一起使用?有什么想法吗?旧视图寻呼机有什么选择吗?以便动态挂钩给定选项卡的片段
  • @Nikhil FragmentPagerAdapter 有两个版本。 android.support.v4.app 包中的一个与支持片段一起使用,android.support.v13.app 中的另一个与“正常”片段一起使用
  • 我希望使用 v13,这样我就可以避免使用 v4。原来 v4 是 v13 的依赖项,所以我不妨使用支持片段/视图分页器。
【解决方案2】:

android.app.Fragment 类自 Android P (link) 以来已弃用,因此只能在任何地方使用 android.support.v4.app.Fragment

【讨论】:

    【解决方案3】:

    如果您打算以 API 11+ 为目标,则不需要支持库 [而且您的实际 apk 会更小,至少)。

    如果您想支持 Android 3.x 之前的任何内容,则需要支持库。

    这是你要问的吗?

    【讨论】:

    • 您需要使用支持库才能使用他所要求的 ViewPager
    • @Matt 感谢您的回答,但我正在寻找包含ViewPager 功能的最佳解决方案,并解释为什么该解决方案是最佳解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多