gpt4 book ai didi

android - 在 API 10 中添加对 fragment 的支持

转载 作者:搜寻专家 更新时间:2023-11-01 08:54:05 24 4
gpt4 key购买 nike

我一直在构建一个直到最近才拥有 minSdkVersion="14" 的应用程序,但我想更改它并添加 api 10 的兼容性。我遇到的第一个问题是样式,但我sort-off 使用 Theme.AppCompat 修复了它。现在我的代码有问题,第一个是我使用了很多 fragment 。

出现在我的应用程序中的第一个 fragment 是:

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

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

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

最佳答案

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

同样重要的是要注意,调用 getSupportFragmentManager() 只是 FragmentActivity 的一部分。和 ActionBarActivity (后者是前者的扩展。它是 Google 的 ActionBarCompat 库的一部分)。

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

but it's weird because if i use it on one inner class (i have the DialogFragments) it takes the error away on both. Why is that?

您可能遇到了多个 Android Lint 错误

What would that do in case i run my app on a higher API

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

Would the app use the compatability library or would it know to use the class from that API?

支持Fragment documentation说:

When running on Android 3.0 or above, this implementation is still used; it does not try to switch to the framework's implementation.

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

关于android - 在 API 10 中添加对 fragment 的支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20448364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com