Не удалось найти класс 'android.support.v7.widget.SearchView $ 5'

Я получаю эту ошибку в y Logcat. Кто-нибудь знает, что это?

08-22 19:02:57.830: E/dalvikvm(660): Could not find class 'android.support.v7.widget.SearchView$5', referenced from method android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11 

Solutions Collecting From Web of "Не удалось найти класс 'android.support.v7.widget.SearchView $ 5'"

Здесь не так много кода, но я столкнулся с этой ситуацией сам и вот что случилось со мной:

Я использовал библиотеку совместимости v7, чтобы иметь ActionBar на Android 2. Я использую материал интерфейса поиска.

Базовый код установки (в onCreateOptionsMenu() )

 SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); SupportMenuItem searchMenuItem = ((SupportMenuItem) menu.findItem(R.id.menu_search)); SearchView searchView = (SearchView) searchMenuItem.getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName())); 

Плохой код

 searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { // on search expand stuff return true; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { // on search collapse stuff return true; } }); 

К сожалению, проблема в том, что мы вызываем метод, который поддерживается только в v14, поэтому мы получаем «странную» ошибку времени выполнения при попытке загрузить некоторые классы, которые неявно используются. Это не очень хорошее объяснение, но в основном это та же самая причина, по которой нам нужно использовать getSupportActionBar() вместо getActionBar() .

Хороший код

 searchMenuItem.setSupportOnActionExpandListener(new MenuItemCompat.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { // do work return true; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { // do work return true; } }); 

Вам нужно убедиться, что вы правильно добавили библиотеку поддержки Android в Eclipse, чтобы удалить следующую ошибку из журнала «Не удалось найти класс android.support.v7.widget.SearchView $ 5, на который ссылается метод android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11 ».

Главное, что нужно помнить, не забудьте отключить Android Dependencies при добавлении библиотеки поддержки, потому что библиотека v7 appcompat имеет ресурсы. После внесения изменений в зависимости от вашего проекта библиотеки поддержки очистите проект библиотеки поддержки и все.

Обратитесь к полной процедуре в разделе Добавление библиотек с ресурсами официального Google doco о том, как добавить библиотеки поддержки с ресурсами.

Вышеприведенный выше ссылка на doco в случае изменения ссылок в будущем:

  1. Убедитесь, что вы загрузили библиотеку поддержки Android с помощью диспетчера SDK.
  2. Создайте проект библиотеки и убедитесь, что необходимые файлы JAR включены в путь сборки проекта:
    • Выберите «Файл»> «Импорт».
    • Выберите «Существующий код для Android в рабочей области» и нажмите «Далее».
    • Перейдите в каталог установки SDK, а затем в папку Support Library. Например, если вы добавляете проект appcompat, перейдите в / extras / android / support / v7 / appcompat /.
    • Нажмите «Готово», чтобы импортировать проект. Для проекта v7 appcompat вы должны увидеть новый проект под названием android-support-v7-appcompat.
    • В новом проекте библиотеки разверните папку libs /, щелкните правой кнопкой мыши каждый файл .jar и выберите «Путь сборки»> «Добавить в путь сборки». Например, при создании проекта v7 appcompat добавьте в путь сборки файлы android-support-v4.jar и android-support-v7-appcompat.jar.
    • Щелкните правой кнопкой мыши проект и выберите «Путь сборки»> «Настроить путь сборки». На вкладке «Заказ и экспорт» проверьте файлы .jar, которые вы только что добавили в путь сборки, поэтому они доступны для проектов, которые зависят от этого проекта библиотеки. Например, для проекта appcompat вам необходимо экспортировать файлы android-support-v4.jar и android-support-v7-appcompat.jar.
    • Снимите флажок Android Dependencies.
    • Нажмите OK, чтобы завершить изменения.

Вам нужно добавить недостающую библиотеку поддержки в проект. В Eclipse: щелкните правой кнопкой мыши по проекту

Выберите Инструменты Android / Добавить библиотеку поддержки …