}
【错误描述】
再利用LruCache类进行一步缓存加载时,使用了LruCache<String, Bitmap>,会出现标题所示信息,requires API level 12
ctrl+1,会出现提示@SuppressLint("NewApi")
@SuppressLint("NewApi")的作用是屏蔽android lint错误,在安卓代码中,我们有时候以后会使用比我们在AndroidManifest 中设置的android:minSDKVersion 版本更高的方法,此时编译器会提示警告
· 解决方法是在方法上加上@SuppressLint(‘NewApi’)
作用仅仅是屏蔽android lint错误,所以在方法中还要判断版本做不同的操作。》》》》》》具体如何操作有待完善。
【原因分析】
可能跟提示信息有关,在创建项目是,我们设置最低版本API level,我的设置的是8,因此,Eclipse检查我调用的API之后,发现版本号不能向低版本兼容,比如我用的LruCache,其中很多方法都是需要API level 12,自然就超过了8,所以提示错误。
【解决方案】
google得到办法:
Right click on the project folder > Android tools > Clear Link Markers,此方法只能临时解决,如果调用的模拟器版本过低,调试完之后还会出现此错误。
stackOVERflow中提示如下:
My best guess is that Lint thinks my minSdkVersion is 1, which it isn't; my manifest declares minSdkVersion="8". I've tried the following in an effort to fix this:
Restarting Eclipse
Restarting my computer
Project > Clean
Manually deleting /bin and /gen to force hem to be generated again
参考:http://stackoverflow.com/questions/10322482/android-lint-erroneously-thinks-min-sdk-version-is-1
根本方法:
把manifest文件中的user-sdk 的android:minSDKVersion改为报错的那个高版本就OK。如下:
<uses-sdk
android:minSdkVersion="12" //这个之前是8
android:targetSdkVersion="18" />
【扩展】
因为设置了最低版本,但使用了高版本API的代码中,解决方案应该相同。