api 级别 11 以下设备的 FragmentActivity 类

Posted

技术标签:

【中文标题】api 级别 11 以下设备的 FragmentActivity 类【英文标题】:FragmentActivity class for below api level 11 devices 【发布时间】:2016-04-05 21:35:49 【问题描述】:

我是安卓开发新手。

我创建了类并从 FragmentActivity 扩展了该类。

当我使用这个功能时getFragmentManager()

它不允许我这样做

我也无法使用getSupportFragmentManager,因为它也给了我无法从支持 api 转换为 android.app 的错误

但后来我在从FragmentActivity 类扩展的抽象类上使用了 TargetApi(11) 属性。

现在错误消失了。

但我想知道,targetApi(11) 是否会限制我的应用在 api 11 以下的安卓设备上运行我的应用?

或低于 api 11 不允许使用 Fragment 或因此不支持 FragmentActivity 类?

如果我提到的最后一件事是真的,我应该使用新活动而不是片段吗?

【问题讨论】:

您使用的是 Android Studio 吗?您是否将 appcompat/support 库添加到您的项目中? 【参考方案1】:

TargetApi(11) 仅抑制 lint 警告,您的应用仍然可以在 11 以下运行。但是如果 API 在较低的 Android 平台上不可用,则可能会崩溃。

解决问题的正确方法是使用 Android 支持库,它在包 android.support.v4.app 中包含 FragmentActivity

您需要编辑 gradle 文件以包含 android 支持库

dependencies 
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:support-v4:22.2.0'

然后同步 gradle 文件并重新编译您的项目。

【讨论】:

【参考方案2】:

不要导入 android.app.FragmentActivity。 它需要大于 android 3.0 的 api。 可以导入android.support.v4.app,FragmentActivity!! 你的问题就解决了!

【讨论】:

以上是关于api 级别 11 以下设备的 FragmentActivity 类的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式获取设备的 Android API 级别?

调用需要 API 级别 11(当前最小值为 1)

Videoview 在 API 级别 14 以下不播放视频

调用需要 API 级别 21(让 camera2 在低于 21 的设备上运行?)[重复]

根据 API 级别实现(切换\切换按钮)

适用于所有 API 级别的 Android 剪贴板代码