Android.widget.SearchView no se puede convertir en android.support.v7.widget.SearchView
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"/>
Esta es la configuración de búsqueda según 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 un manejador de intenciones en la nueva actividad de búsqueda. ¿Por qué aparece este error? 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;
Debe utilizar estas importaciones en lugar de utilizar las importaciones de biblioteca de soporte
import android.app.SearchManager; import android.widget.SearchView; import android.widget.SearchView.OnQueryTextListener;
Sólo para tener en cuenta que el SDK mínimo está marcado como 14
En su menu.xml su 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" />
Con ese cambio en la última línea
Intente agregar esto:
MenuItem menuItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem);
Funcionó para mí.
Buscar import android.widget.SearchView;
En sus importaciones y reemplazarlo por import android.support.v7.widget.SearchView