studio ejemplo bar app android search android-manifest searchable

ejemplo - Dos actividades searchable.xml en un AndroidManifest.xml



searchview android ejemplo (3)

En su archivo Manifest , actualice la etiqueta de actividad ImageListActivity

<activity android:name=".ImageListActivity" ... <meta-data android:name="android.app.default_searchable" android:value=".SearchResultsImageActivity" /> </activity>

Por lo tanto, cuando ImageListActivity búsqueda nativa en ImageListActivity , invocará SearchResultsImageActivity y por defecto una para otros.

Suponiendo que SearchResultsImageActivity se puede searchable .

Tengo una aplicación para Android que tiene algunas actividades diferentes para buscar artículos e imágenes descargadas de RSS.

Me gustaría poder ofrecer conectar el botón de búsqueda al cuadro de diálogo Buscar , utilizando el archivo searchable.xml . He logrado hacer esto con una búsqueda, usando:

<activity android:name=".search.SearchResultsActivity" android:label="@string/search_results_activity_title" > <intent-filter> <action android:name="android.intent.action.SEARCH" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable_articles"/> </activity>

y en el <application />

<meta-data android:name="android.app.default_searchable" android:value=".search.SearchResultsActivity" />

Ahora puedo iniciar el cuadro de diálogo Buscar desde cualquier actividad, e inicia SearchResultsActivity .

Ahora me gustaría poder buscar imágenes cuando el usuario es un ImageListActivity , usando un searchable_images.xml , y usar el valor predeterminado en cualquier otro lugar.

Tengo una SearchResultsImageActivity que incluye el siguiente elemento de metadatos y usé el mismo elemento en ImageListActivity .

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

Al presionar el botón de búsqueda en ImageListActivity , obtengo la búsqueda predeterminada de searchable_articles.xml .

Si cambio el default_searchable a SearchResultsImageActivity , la búsqueda de imágenes siempre se inicia y la búsqueda de artículos nunca se inicia.

Si default_searchable por completo el elemento de metadatos de searchable defecto y agrego actividades seleccionadas seleccionadas de metadatos, no se inicia ninguna búsqueda.

Estoy bastante seguro de que esto debería ser posible, pero no sé qué estoy haciendo mal.


Si anula la función de búsqueda solo en esa actividad, debería evitar que la llamada de búsqueda pase al nivel de la aplicación. El valor de retorno se controla si la llamada se propaga hacia arriba.

@Override public boolean onSearchRequested() { onPromptSearch(); return false; // don''t go ahead and show the search box }


Una forma en que lo hice fue crear actividades falsas y luego cambiar las actividades cuando las necesitas.

<activity android:name="activitySearchMain" /> <activity android:name="activitySearchSub1"> <intent-filter> <action android:name="android.intent.action.SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.ALTERNATIVE" /> <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> <data android:scheme="user" /> </intent-filter> </activity> <activity android:name="activitySearchSub2"> <intent-filter> <action android:name="com.sample.twitter.action.SEARCH" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.ALTERNATIVE" /> <category android:name="android.intent.category.SELECTED_ALTERNATIVE" /> <data android:scheme="user" /> </intent-filter> </activity>

Crear dos clases que se nombran para las sub actividades.

luego crea intenciones como esta cuando se hace clic en el componente ...

Intent sourceIntent = getIntent(); Intent newIntent = new Intent(this, activitySearchSub2.class); newIntent.setAction(activitySearchSub2.ACTION2); newIntent.setData(sourceIntent.getData()); startActivity(newIntent); finish();

y llame a los intentos de onClick cuando se haga clic en un botón o se haga clic en otro componente: