NullPointerException en SearchView con AppCompat en Android 5.0
Estoy actualizando mi aplicación usando todos los temas de AppCompat. Obtengo un nullpointer aquí:
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu, menu); MenuItem searchItem = menu.findItem(R.id.menu_search); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); setupNewSearchView(searchItem, searchManager); return true; } private void setupNewSearchView(final MenuItem searchItem, SearchManager searchManager) { final SearchView searchView = (SearchView) searchItem.getActionView(); // Null at line below searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); // Everything else below edited out }
Aquí están mis importaciones clave:
- Cómo eliminar subrayado blanco en un widget de SearchView en la barra de herramientas Android
- Cómo corregir el corte personalizado de fondo SearchView en el paisaje?
- El botón de la barra de acciones no se muestra en la vista de búsqueda de Android
- Restablecer barra de acciones después de usar SearchView
- No se puede llamar a void android.view.View.setElevation (float) en un objeto nulo en lapism / SearchView
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView;
¿Tengo razón al pensar que esta línea debe cambiar al actualizar a AppCompat
?
final SearchView searchView = (SearchView) searchItem.getActionView();
ACTUALIZACIÓN :
Lo cambié a esto
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
Con el mismo resultado nulo …
UPDATE – ADD XML
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/menu_search" app:actionViewClass="android.support.v7.widget.SearchView" android:icon="@android:drawable/ic_menu_search" app:showAsAction="always" android:title="search" /> <item </menu>
LogCat :
10-24 11:49:07.040: E/AndroidRuntime(4846): java.lang.NullPointerException 10-24 11:49:07.040: E/AndroidRuntime(4846): at com.---.---.MainFragmentActivity.setupNewSearchView(MainFragmentActivity.java:1300) 10-24 11:49:07.040: E/AndroidRuntime(4846): at com.---.---.MainFragmentActivity.onCreateOptionsMenu(MainFragmentActivity.java:1292) 10-24 11:49:07.040: E/AndroidRuntime(4846): at android.app.Activity.onCreatePanelMenu(Activity.java:2538) 10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:275) 10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:276) 10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivityDelegate$1.onCreatePanelMenu(ActionBarActivityDelegate.java:79) 10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivityDelegateBase.preparePanel(ActionBarActivityDelegateBase.java:1056) 10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivityDelegateBase.doInvalidatePanelMenu(ActionBarActivityDelegateBase.java:1259)
- Crear ContentProvider asincrónico para Actionbar SearchView
- Android: getSearchableInfo (getComponentName ()) devolviendo null?
- Android ActionBar Personalizar Buscar Ver
- SearchView con múltiples fragmentos usando viewpager en android
- Implementación correcta de SearchView en la barra de herramientas de Android
- Android Support Library ActionBar no funciona en el dispositivo 2.3
- Android: Añadir un botón personalizado a SearchView Widget en Actionbar
- Problemas de procesamiento No se pudo resolver resource @ id / search_edit_frame
Con la biblioteca de la ayuda usted tiene que utilizar una clase speicific del artículo del menú: MenuItemCompat
.
android.support.v4.view.MenuItemCompat
El nombre del método ( getActionView
) permanece igual.
El menú xml debería tener este aspecto:
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" app:showAsAction="always" app:actionViewClass="android.support.v7.widget.SearchView" android:title="Search"/> </menu>
- Java anidado clase interna acceso a las variables de clase externa
- Android Studio muestra Errores (Traducción perdida) después de actualizar