El widget de búsqueda en la barra de acción no activa mi actividad de búsqueda
Estoy desarrollando interfaz de widget de búsqueda basado en tutorial oficial: http://developer.android.com/guide/topics/search/search-dialog.html
Problema: Mi actividad SearchableActivity no se dispara cuando entro mi consulta y presiona Ok / enter.
- Abrir búsqueda global como superposición
- Mostrar SearchWidget en ActionBar si el usuario presiona el botón de búsqueda del dispositivo
- Android: Cómo detectar el clic en el elemento personalizado de SearchView
- Uso del rango de búsqueda personalizado en android
- Evite que un solo toque cambie el progreso de SeekBar
Manifiesto para SearchableActivity:
<activity android:name="SearchableActivity" android:launchMode="singleTop" > <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity>
Xml / searchable.xml
<?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:hint="Search" android:label="@string/app_name" > </searchable>
Método de ciclo de vida de la actividad principal que agrega iconos a la barra de acción (funciona bien):
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); // Get the SearchView and set the searchable configuration SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); // Do not iconify the widget;expand it by default searchView.setIconifiedByDefault(false); return true; }
SearchableActivity.java
public class SearchableActivity extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("MY", "search activity triggered"); } }
Nota: El widget de búsqueda aparece en la barra de acción y puedo insertar datos, pero al presionar OK / Enter no me llevará a la SearchableActivity (no activa onCreate de la SearchableActivity).
¿Estoy perdiendo algo o es el tutorial oficial defectuoso?
- Ocultar teclado cuando se envía una búsqueda o se elige una sugerencia de búsqueda
- Android: SeekBar con dibujable a medida
- ¿Por qué OnSeekBarChangeListener siempre devuelve la variable booleana falsa?
- Personalizar rangeseekbar android con un pulgar
- Búsqueda personalizada android
- ¿Cuándo es necesario usar singleTop launchMode en un widget o aplicación de Android?
Problema resuelto: el tutorial parece faltar una parte importante: <meta-data android:name="android.app.default_searchable" android:value=".MySearchActivityName" />
tiene que ser agregado dentro de las etiquetas <application>
en manifiesto para obtener El widget de búsqueda funciona correctamente.
EDIT – También una pista para resolver un problema cuando la búsqueda de la barra de acción no se activa en la publicación de datos (ningún error dado y las documentaciones no tiene una palabra sobre esta limitación): in searchable.xml android: hint and android: label atributos DEBE ser referencias a cadenas en strings.xml. Fuente
Debe anular onOptionsItemSelected
y probablemente onSearchRequested
en su actividad.
Si el archivo "xml / searchable.xml" no está correctamente formateado (cosas como la etiqueta "buscable" no en minúsculas), no se devuelve ningún mensaje de error durante la ejecución y no se invoca "SearchableActivity".