No estoy seguro de por qué estoy recibiendo este error. Aquí está el menú en cuestión:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.myapp.MainActivity" >

  <item
  android:id="@+id/action_search"
  android:icon="@drawable/ic_action_search"
  android:title="@string/action_search"
  android:showAsAction="collapseActionView|ifRoom"
  android:actionViewClass="android.widget.SearchView" />


<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:title="@string/action_settings"
    app:showAsAction="never"/>

Aquí está la base de la configuración como por la guía del desarrollador.

<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android" 
            android:label="@string/app_name"
            android:hint="@string/search_hint" >
</searchable>

Añadido a mi archivo de manifiesto:

<meta-data
                android:name="android.app.searchable"
                android:resource="@xml/searchable" />

También tengo la intención de controlador en la nueva actividad de búsqueda. ¿Por qué es este error que muestra? Mi min sdk es 11.

EDITAR

En onCreateOptionsMenu:

//Associate searchable config with the SearchView
        SearchManager searchManager = 
                (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = 
                (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(
                searchManager.getSearchableInfo(getComponentName()));
        return true;
publica tu logcat y también el archivo de manifiesto de…
Esto podría ser sólo una importación incorrecta, ya que hay dos clases con ese nombre. Estás haciendo algo como SearchView searchView = (SearchView)menuItem.getActionView();?
Sí @matiash, publicado anteriormente. Stacktry, voy a publicar los que en un minuto.
Ok, entonces probablemente se trate de la importación. Compruebe que la importación android.widget.SearchView y no android.support.v7.widget.SearchView en el archivo Java donde tienen este código.
Efectivamente, eso fue todo. Gracias.

OriginalEl autor settheline | 2014-07-02

7 Comentarios

  1. 30

    uso de estas importaciones en lugar de utilizar la biblioteca de compatibilidad de las importaciones

    import android.app.SearchManager;
    import android.widget.SearchView;
    import android.widget.SearchView.OnQueryTextListener;

    Sólo para tener en cuenta que el mínimo SDK está marcado como 14

    ¿cómo puede usted voto de una ya ha aceptado la respuesta?
    De hecho a mí me funcionó!
    Esto no funcionará si usted realmente desea utilizar la biblioteca de compatibilidad.
    Como @KickingLettuce dice, cuando se utiliza el apoyo de la biblioteca, el error es a la inversa, i.e, android.support.v7.widget.SearchView cannot be cast to android.widget.SearchView. En este caso, reemplace la línea import android.widget.SearchView con import android.support.v7.widget.SearchView
    Gracias Sharadh, a mí me funciona. Saludos!

    OriginalEl autor Anuj

  2. 39

    En su menu.xml tu tiene que ser

    <item
      android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      android:showAsAction="collapseActionView|ifRoom"
      android:actionViewClass="android.support.v7.widget.SearchView" />

    que con el cambio en la última línea

    thx por android.support.v7.widget.SearchView debe ser aceptado respuesta.
    Este es el trabajo de contestar. Vale la pena para ser aceptado respuesta.
    debe ser aceptado.
    este es el único que he echado de menos, gracias por tu respuesta!
    Esto debe ser aceptado respuesta

    OriginalEl autor DejaVu

  3. 13

    Encontrar import android.widget.SearchView; en sus importaciones y reemplazarlo con import android.support.v7.widget.SearchView

    es curioso, porque yo había importar android.support.v7.widget.SearchView; y necesitaba importar android.widget.SearchView;
    Se puede Votar hasta mi respuesta 🙂

    OriginalEl autor Rahel

  4. 2

    Trate de añadir esto:

    MenuItem menuItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem);

    Que trabajó para mí.

    Mientras que este código puede responder a la pregunta, proporcionar contexto adicional sobre cómo y/o por qué se resuelve el problema podría mejorar la respuesta del valor a largo plazo.

    OriginalEl autor user3223097

  5. 1

    lugar de utilizar los androides

    android:actionViewClass="android.widget.SearchView"

    usted tiene que usar las aplicaciones

    app:actionViewClass="android.widget.SearchView"

    como por la documentación.

    OriginalEl autor NaturallyAsh

  6. 0

    se puede fijar este problema haciendo este trabajo en su código

    la adición de este

    import android.widget.SearchView;

    OriginalEl autor Mahboob Ahmed Toor

  7. 0

    De acuerdo a la documentación, En el onCreateOptionsMenu uso

    MenuItem menuItem = menu.findItem(R.id.action_search);
            SearchView searchView = (SearchView) menuItem.getActionView();

    es decir:use el elemento de menú directamente a la llamada getActionView() método

    lugar de

    MenuItem menuItem = menu.findItem(R.id.action_search);
            SearchView searchView = MenuItemCompat.getActionView(menuItem);

    o

    searchView = (SearchView) menu.findItem(R.id.action_search);

    porque ambos están en desuso

    OriginalEl autor Galiwango Fahad

Dejar respuesta

Please enter your comment!
Please enter your name here