这个错误是什么意思,我该如何摆脱它?

时间:2013-10-08 10:01:37

标签: java android android-2.2-froyo android-sdk-2.3 android-sdk-2.1

我在两个不同的文件夹(略有不同的版本)中安装了Android SDK,同时打开了两个相同项目的副本(即SDK1 - Project1; SDK2 - > Project1的副本)。 SDK1工作正常,但SDK2显示错误

Call requires API level 13 (current min is 8): android.view.Display#getSize  

getWindowManager().getDefaultDisplay().getSize(p);  

在MainActivity类中。我该如何删除?
(我很确定这与编译器选项或其他东西有关; SDK2建议我只需将@SuppressWarning添加到onCreate(),而我不需要对SDK1做任何事情;只是抑制警告就足够了,或者会它会以意想不到的方式破坏我的程序)?

2 个答案:

答案 0 :(得分:2)

此警告告诉您应用程序可以在低于13的SDK上运行,getDefaultDisplay()自API 13开始可用,因此如果您在较低的SDK上运行它,您将获得某种ClassNotFoundMethodNotFound例外。您必须为较低的API级别管理此代码。

要对此进行管理,您可以使用返回当前API级别的android.os.Build.VERSION.SDK_INT并添加@SuppressWarning注释

编辑:您收到此警告的原因是您在清单中使用的targetSdkVersion高于minSdkVersion

答案 1 :(得分:2)

错误解释本身您正在调用API 13之前不存在的方法或类,并且您的min API为8!更改为manifest.xml中的这些行

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="13" />

如果项目超过13

,您可以将android:targetSdkVersion="13"保留在项目中