Android API级别错误
在“活动”中,我有一个显示此错误的代码,但仅当您按“保存”时Android API级别错误,android,Android,在“活动”中,我有一个显示此错误的代码,但仅当您按“保存”时 Call requires API level 11 (current min is 8): android.widget.SearchView#setSearchableInfo 如果我将android:minSdkVersion更改为7,它可以工作,但是当我再次保存代码时,会抛出相同的错误。然后必须将minSdk更改回8,。。。 有什么问题吗?Android版本11 ant more中存在SearchView。 因此,如果您想在
Call requires API level 11 (current min is 8): android.widget.SearchView#setSearchableInfo
如果我将android:minSdkVersion更改为7,它可以工作,但是当我再次保存代码时,会抛出相同的错误。然后必须将minSdk更改回8,。。。
有什么问题吗?Android版本11 ant more中存在SearchView。 因此,如果您想在代码中使用SearchView,您必须将清单中的minSdkVersion设置为11。如果你输入了一个小于11的数字,你会得到一个错误,这是正常的,因为你将应用程序的访问权限授予了一些不支持你的应用程序的android版本 这可以在这里看到(感谢@JesseJ):
SearchView
从API 11级开始提供
由于您的最小sdk为8(低于11),因此Lint在使用SearchView
时会给出一个错误。
您可以在方法或类之前使用@TargetApi
注释来删除该错误。
但是,在使用SearchView
检查它是否可用之前,您必须确保使用了条件语句,并为早期版本提供了一种替代方法
以下是您的代码的外观:
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
void yourMethod(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
// use SearchView
} else {
// use some other backward compatible custom view
}
}
在API 8中不能使用该方法。您至少需要API 11。如图所示:您不必将minSdkVersion更改为11,但您肯定需要添加条件逻辑以在运行时检查设备的API级别,并且仅在设备运行API 11+时调用该函数。
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
void yourMethod(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
// use SearchView
} else {
// use some other backward compatible custom view
}
}