无法运行ActionBarCompat示例

时间:2012-10-02 09:25:10

标签: java android eclipse android-actionbar-compat

我在编译和运行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抑制newApi添加到其中一个方法中,现在它似乎运行正常。我更加困惑。有人能说清楚发生了什么吗?

3 个答案:

答案 0 :(得分:1)

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

Lint会检查这些类型的API调用并给你一个警告。

显然在ActionBarCompat中检查当前的API级别,以确保拨打电话是安全的。

要删除警告,只需在拨打电话的方法前添加@TargetApi(14)即可。

答案 1 :(得分:1)

可悲的是,每次SDK迭代都没有及时更新这些示例 - 首先,你设定了sdkversion = 3分钟?这对我来说似乎有点低。 7(eclair)是我认为大多数项目应该关注的最低版本。 较低级别的版本具有荒谬的市场份额,并将继续下降。

- 这些是Lint警告。 Lint对Android来说是一个新手,这就是为什么这个样本没有考虑到它。它会告诉您代码中可能存在的问题。此警告意味着您在可以在3级终端上运行的代码中调用14级。您应该尝试使用@TargetApi(14)注释删除它们。这个注释告诉Lint你知道你在做什么,这个代码只会至少运行sdk version = 14。

- 另外,如果你想在任何版本的Android上使用动作栏,你真正想要使用的是开源ActionBar Sherlock库。虽然一步一步: - )

答案 2 :(得分:0)

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

这些是他们的要求:

由于在冰淇淋三明治上使用了本机操作栏及其相关类,因此库需要 它和您的项目编译时Android 4.0或更新版。该项目还要求您在编辑器和您可能正在使用的任何构建系统中使用JDK 1.6进行编译。