Получение SearchView с помощью MenuItemCompat (Android)

Я пытаюсь реализовать элемент SearchView ActionBar, как говорят разработчики Android, но у меня возникли проблемы. (http://developer.android.com/guide/topics/ui/actionbar.html ).

Есть две ошибки, которые, хотя я много искал, не смог найти решения.

1) У меня проблема с классом MenuItemCompat. В нем говорится: метод getActionView (MenuItem) не определен для типа MenuItemCompat

Я могу использовать только для этого класса следующие методы:

  • setShowAsAction (элемент, actionEnum)
  • setActionView (элемент, вид)

Вот это код

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.restloader, menu);
    MenuItem searchItem = menu.findItem(R.id.search_menu);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);       

    // Configure the search info and add any event listeners

    return super.onCreateOptionsMenu(menu);
}

2) С этим есть проблема: xmlns:myapp="http://schemas.android.com/apk/res-auto" Я не понимаю, зачем это используется, но если гугл так говорит, должно быть уместно.

Сообщение об ошибке: в этой строке найдено несколько аннотаций: - ошибка: не найден идентификатор ресурса для атрибута "actionViewClass" в пакете "com.example.pruebahttp3" - ошибка: не найден идентификатор ресурса для атрибута "showAsAction" в пакете "com.example. пруэбаhttp3'

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myapp="http://schemas.android.com/apk/res-auto" >

<item
    android:id="@+id/search_menu"
    android:orderInCategory="100"
    android:title="@string/search"
    android:icon="@drawable/ic_search_category_default"
    myapp:showAsAction="ifRoom|collapseActionView"
    myapp:actionViewClass="android.support.v7.widget.SearchView">         
</item>

Thank you very much!


person mxmolins    schedule 02.09.2013    source источник


Ответы (3)


У меня такая же проблема, я решил ее, используя следующий код. Позаботьтесь о своем пространстве имен.`

<!-- Search, should appear as action button -->
<item
    android:id="@+id/action_search"
    android:icon="@drawable/abc_ic_search"
    share:showAsAction="ifRoom"
    share:actionViewClass="android.support.v7.widget.SearchView"
    android:title="@string/abc_searchview_description_search" />

`

person hoot    schedule 04.01.2014

Для первого: исправление второго исправит это :)

Для 2-го:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res-auto" >

Измените myapp на ваше пространство имен приложений com.xxx.xxx

person BradR    schedule 02.09.2013

Попробуйте скопировать файлы lib непосредственно из yourFolder\sdk\extras\android\support\v7\appcompat\libs. У меня похожая проблема, но она возникает у меня, когда я напрямую копирую файл библиотеки JAR, а не следую процедуре библиотеки поддержки Android. . Попробуйте наоборот, может у вас сработает. Немного странно, если вы спросите меня.

person coderVishal    schedule 15.04.2014