No se puede obtener android.support.v7.widget.SearchView para aceptar el texto

Después de horas de intentar conseguir un SearchView de la ayuda en mi barra de herramientas de la ayuda para trabajar correctamente (aparece, muestra el texto de la indirecta pero rechaza aceptar el texto), tengo que dar vuelta a usted.

He buscado en Google por horas, leí MUCHAS respuestas aquí y en otros sitios, he comprobado una gran cantidad de documentación y un blog específico que trata sobre el tema, pero no puedo aislar el problema.

Como he dicho, estoy utilizando las versiones de soporte de SearchView y Toolbar y también MenuItemCompat. Además, ActionBarActivity. Me aseguré de que siguió todos los pasos religiosamente ( este post del blog tenía mucho que decir sobre el tema, incluso los errores en la documentación oficial).

He definido el archivo AndroidManifest.xml correctamente, tengo un searchable.xml que, por lo que entiendo, se hace referencia correctamente (quiero decir, el texto de la pista aparece normalmente en el campo SearchView), tengo una actividad de resultados de búsqueda con Un filtro de intención android.intent.action.SEARCH establecido en el manifiesto.

Aún nada. Estoy honestamente perplejo aquí.

Aquí está onCreateOptionsMenu () de la actividad de alojamiento de SearchView:

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); MenuItem search = menu.findItem(R.id.search); searchView = (SearchView) MenuItemCompat.getActionView(search); SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); searchView.setSearchableInfo(searchManager .getSearchableInfo(getComponentName())); return true; } 

Y aquí está searchable.xml en res / xml:

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

Por último, aquí está el archivo menu.xml en res / menu:

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

(Obviamente myappname reemplaza mi nombre de aplicación real aquí).

Extrañamente, la búsqueda de voz funciona perfectamente normal después de agregar

 android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" 

En searchable.xml. Incluso envía la frase reconocida en la intención de la actividad de resultados de búsqueda. El único problema es que simplemente no puedo ingresar texto en el campo de texto – ni siquiera hay un cursor parpadeando allí. Los intentos de hacer algo como searchView.requestFocus () no tienen ningún resultado.

One Solution collect form web for “No se puede obtener android.support.v7.widget.SearchView para aceptar el texto”

Después de perder 8 horas en esto, me propuse una solución. No estoy seguro de cuánto de un hack es, pero funciona.

Me di cuenta de que el EditText en el SearchView se comportaba erráticamente en lo que respecta a la concentración se refiere: no tenía ningún cursor y, curiosamente, cuando tire el cajón de notificación hacia abajo, parecía cambiar el enfoque. Decidí ir con la teoría que el problema era el foco del EditText dentro del SearchView, así que fui buscando el android.R.id del EditText.

Después de buscar, encontré esta respuesta . Así que tengo una referencia a la EditText dentro de la SearchView así:

 EditText searchField = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 

Entonces pedí el foco para el EditText:

 searchField.requestFocus(); 

… y de repente el SearchView podría aceptar texto, con todas las devoluciones de llamada relevantes trabajando!

Sólo tenía un problema a la izquierda: cuando onPause () fue llamado, mi solución dejó de funcionar desde el EditText perdido foco. Así que acabo de añadir:

 invalidateOptionsMenu(); 

… en onResume () y ahora funciona perfectamente.

Debo decir, sin embargo: fue una experiencia realmente extraña desde que seguí los pasos religiosamente (no en la guía oficial de desarrolladores de Android, que tiene una serie de errores) y todavía no podía obtener el SearchView EditText para enfocar. Tengo una sospecha de que el cajón de nav se centra en la creación de actividades y tal vez esa fue la fuente del problema, pero no estoy seguro todavía.

  • Pasar la consulta de búsqueda ActionBar para fragmentar
  • Barra de Acción Sherlock SearchView no se expande al hacer clic
  • Cómo manejar el botón Atrás de la vista de búsqueda en android
  • vista de búsqueda no expandir todo el ancho
  • Android ActionBar: plegable SearchView con botón de acción
  • SearchView en ListView con un adaptador personalizado
  • El uso de SearchView con AppCompatActivity genera fallas en la interfaz de usuario
  • ¿Es posible alinear a la izquierda SearchView en AppCompat 21 con la barra de herramientas?
  • No se puede llamar a void android.view.View.setElevation (float) en un objeto nulo en lapism / SearchView
  • NullPointerException en SearchView con ActionBarSherlock
  • Buscar sugerencias de diferentes tablas en diferentes actividades
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.