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