Android использует библиотеку поддержки для поддержки SearchView

Это мой код:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    MenuItem searchItem = menu.findItem(R.id.searchMenuItem);
    SearchManager searchManager =
        (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    // searchView.set
    searchView.setSearchableInfo(
        searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false);
}

Мой минимальный API – 8.
У меня возникает эта ошибка компиляции.

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

Обратите внимание, что я не могу изменить минимальный SDK.


person user2059935    schedule 17.02.2014    source источник
comment
На самом деле эту ошибку можно игнорировать. В Eclipse есть настройка для его отключения. Или, если вы находитесь в любом другом файле в Eclipse, когда вы нажмете кнопку отладки, это не остановит сборку.   -  person Gabe Sechan    schedule 17.02.2014
comment
используйте editText вместо searchview. что такое min sdk в манифесте?   -  person Raghunandan    schedule 17.02.2014
comment
что вы подразумеваете под невозможностью изменить минимальный SDK?   -  person Vishal Santharam    schedule 17.02.2014
comment
@VishalSantharam, я имею в виду, что хочу поддерживать устройства 2.2 и более поздних версий.   -  person user2059935    schedule 17.02.2014
comment
@GabeSechan, так что, если я проигнорирую эту ошибку, мое приложение все еще будет работать на Android 2.2 и более поздних версиях?   -  person user2059935    schedule 17.02.2014
comment
@Raghunandan, можешь привести пример, пожалуйста?   -  person user2059935    schedule 17.02.2014
comment
Затем вы должны использовать библиотеку поддержки Android. библиотека/index.html   -  person Vishal Santharam    schedule 17.02.2014
comment
@ user2059935 вы можете использовать представление поиска из библиотеки поддержки с android.support.v7.widget.SearchView, используя AppCompat Look @ разработчик .android.com/guide/topics/ui/actionbar.html   -  person Raghunandan    schedule 17.02.2014
comment
да. Это вызовет исключение только в том случае, если он действительно попытается выполнить эту функцию, чего не должно происходить из-за оператора if. Я использовал этот шаблон в прошлом, и он работал нормально. Хотя, как кто-то предложил, использование библиотеки поддержки может быть еще лучшим решением, чтобы предоставить вашим пользователям 2.2 больше функциональности. ИМО, хотя 2.2 действительно не стоит времени на поддержку — менее 2% всех приложений, загруженных в Play в прошлом месяце, были загружены с устройства 2.2.   -  person Gabe Sechan    schedule 17.02.2014


Ответы (1)


Вы можете использовать android.support.v7.widget.SearchView

вместо android.widget.SearchView

Ваш код может выглядеть так:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                MenuItem searchItem = menu.findItem(R.id.searchMenuItem);
                SearchManager searchManager =
                        (SearchManager) getSystemService(Context.SEARCH_SERVICE);
                android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) MenuItemCompat.getActionView(searchItem);

                searchView.setSearchableInfo(
                        searchManager.getSearchableInfo(getComponentName()));
                searchView.setIconifiedByDefault(false);

            }

Также читайте подробнее о SearchViewCompat.

person William Kinaan    schedule 17.02.2014
comment
Я тестирую ваше решение - person user2059935; 17.02.2014