0

我在编译和运行 Android 16 的 ActionBarCompat 示例时遇到问题。我选择了 API 级别 16 作为构建目标,这似乎构建得很好,但是当我尝试调试时弹出这些错误。当然,我可以更改清单中的最低 API 级别,但这样做有什么意义呢?我没有对示例进行任何更改,为什么它不能正常工作?

Class requires API level 14 (current min is 3): android.view.ActionProvider SimpleMenuItem.java /ActionBarCompat/src/com/example/android/actionbarcompat    line 129    Android Lint Problem

Class requires API level 14 (current min is 3): android.view.ActionProvider SimpleMenuItem.java /ActionBarCompat/src/com/example/android/actionbarcompat    line 134    Android Lint Problem

Class requires API level 14 (current min is 3): android.view.MenuItem.OnActionExpandListener    SimpleMenuItem.java /ActionBarCompat/src/com/example/android/actionbarcompat    line 155    Android Lint Problem

我很困惑,任何帮助将不胜感激。

更新:我添加了 @TargetApi(14) 注释,然后将 Lint suppres newApi 添加到其中一种方法中,现在它似乎运行良好。我更加困惑。任何人都可以对发生的事情有所了解吗?

4

3 回答 3

1

在您的清单中,您定义android:minSdkVersion="3"了 ,但您正在调用 API 级别 14 类/方法。

Lint 将检查这些类型的 API 调用并向您发出警告。

显然,在ActionBarCompat当前 API 级别进行检查以确保调用是安全的。

要删除警告,只需@TargetApi(14)在您进行调用的方法之前添加。

于 2012-10-02T09:37:38.880 回答
1

遗憾的是,这些示例并未针对每个 SDK 迭代保持最新。
- 首先,您设置了sdkversion = 3? 这对我来说似乎有点低。7(eclair)是我认为大多数项目应该关注的最低版本。较低级别的版本具有荒谬的市场份额,并且会不断下降。

- 这些是 Lint 警告。Lint 对 Android 来说有点新,这就是为什么这个示例没有考虑它。它告诉您代码中的潜在问题。此警告意味着您正在调用可以在 3 级终端上运行的代码中的 14 级类。您应该尝试使用@TargetApi(14)注释删除它们。这个注解告诉 Lint 你知道你在做什么,并且这段代码至少只会在 sdk version=14 的情况下运行。

-另外,如果你想在任何版本的 Android 上使用 actionbar,你真正想要使用的是开源的 ActionBar Sherlock 库。不过一次一步:-)

于 2012-10-02T09:45:27.463 回答
0

您需要将项目构建目标更改为 API 级别 14..in (project->properties->Android)

这些是他们的要求:

由于在 Ice Cream Sandwich 上使用了本机操作栏及其相关类,因此该库要求它和您的项目使用 Android 4.0 或更高版本进行编译。该项目还要求您在您的编辑器和您可能使用的任何构建系统中都使用 JDK 1.6 进行编译。

于 2012-10-02T09:29:01.993 回答