【问题标题】:Adding support for Fragments in API 10在 API 10 中添加对 Fragments 的支持
【发布时间】:2013-12-08 00:19:48
【问题描述】:

我一直在构建一个直到最近才有 minSdkVersion="14" 的应用程序,但我想改变它并为 api 10 添加兼容性。我遇到的第一个问题是样式,但我通过使用 @987654322 解决了它@。现在我的代码有问题,第一个是我使用了很多片段。

我的应用中出现的第一个片段是:

FirstRunNotice firstRunNotice = new FirstRunNotice();
firstRunNotice.show(getFragmentManager(), "WhatDoesThisStringEvenDo?");
//.show method gives an error

这只是我的活动中的一个内部类,它扩展了DialogFragment。我如何在 API 10 上进行这项工作?如果我将其更改为android.support.v4.app.DialogFragment,它似乎会消除错误(使用 Android Studio),但这很奇怪,因为如果我在一个内部类(我有 DialogFragments)上使用它,它会消除两者的错误。这是为什么?

另外,如果我将所有 Fragment 扩展类更改为 android.support.v4.app.Fragment, .DialogFragment, .ListFragment... 如果我在更高的 API(比如 19)上运行我的应用程序会怎样?应用程序会使用兼容性库还是知道使用该 API 中的类?有区别吗?

【问题讨论】:

    标签: android android-fragments android-compatibility


    【解决方案1】:

    既然您现在想要支持 Gingerbread 及更低版本,您必须使用android.support.v4.app.* Fragment 类来编译和运行您的应用程序。 对getFragmentManager() 的调用也应替换为getSupportFragmentManager()

    还需要注意的是,调用getSupportFragmentManager() 只是FragmentActivityActionBarActivity 的一部分(后者是前者的扩展。它是Google 的ActionBarCompat 库的一部分)。

    这是因为支持 Fragments 是 Android 系统的补充,因此需要有一种方法来实现它们,而无需过多依赖 Android 内部(因为 Gingerbread 及更低版本没有Fragment 的概念)。

    但这很奇怪,因为如果我在一个内部类上使用它(我有 DialogFragments)它消除了两者的错误。这是为什么呢?

    您可能遇到多个 Android Lint 错误

    如果我在更高的 API 上运行我的应用程序会怎样

    没什么,支持库也适用于新的 API 版本。当然,如果您之前的代码需要 API 11+,那么您也需要想办法将其向后移植。

    应用程序会使用兼容性库还是知道使用 该 API 中的类?

    支持Fragmentdocumentation 说:

    在 Android 3.0 或更高版本上运行时,此实现仍然是 用过的;它不会尝试切换到框架的实现。

    将始终使用支持片段。通常,这不是问题。

    【讨论】:

    • 感谢您的解释!我唯一无法工作的是getFragmentManager(),如果我只是将其更改为getSupportFragmentManager(),则该方法无法解决...
    • @Squeazer 您现在是在扩展FragmentActivity 还是ActionBarActivity?我假设是因为您使用的是Theme.AppCompat
    • 第一个活动扩展Activity。它基本上是从 Web 加载一些 xml 文件的应用程序的启动画面。 gerFragmentManager() 是从 onCreate() 和内部 AsyncTask 类调用的。
    • 您确实需要扩展我为getSupportFragmentManager() 提到的类之一来解决(我编辑了答案以包含此信息)
    • 没关系,在这里找到答案:link 感谢您的帮助!
    猜你喜欢
    • 2016-04-26
    • 2015-07-30
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    相关资源
    最近更新 更多