Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android API级别错误_Android - Fatal编程技术网

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
    }
}