0

In an Activity I have a code that shows this error, but only if you press save.

Call requires API level 11 (current min is 8): android.widget.SearchView#setSearchableInfo

If I change the android:minSdkVersion to 7, it works, but when I save the code again, the same error is thrown. The minSdk must then be changed back to 8,... What is wrong?

4

2 回答 2

4

SearchView从 API lvl 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
    }
}
于 2013-01-23T15:41:26.497 回答
3

SearchView 存在于 Android 版本 11 ant more 中。因此,如果您想在代码中使用 SearchView,则必须将清单中的 minSdkVersion 设置为 11。如果您输入的数字小于 11,您将收到错误,这是正常的,因为您是允许某些不支持您的应用的 android 版本访问您的应用。

这可以在这里看到(感谢@JesseJ):http: //developer.android.com/reference/android/widget/SearchView.html

Added in API level 11
于 2013-01-23T15:32:08.463 回答