Ich habe eine Android-App, die ein paar verschiedene Aktivitäten zum Durchsuchen von Artikeln und Bildern aus RSS heruntergeladen hat.Zwei durchsuchbare.xml-Aktivitäten in einer AndroidManifest.xml
Ich würde gerne in der Lage zu bieten, die search button to the Search dialog, unter Verwendung der a searchable.xml
Datei anschließen. Ich habe es geschafft, dies mit nur einer Suche zu tun, mit:
<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>
und in der <application />
<meta-data android:name="android.app.default_searchable"
android:value=".search.SearchResultsActivity" />
kann ich nun den Suchen-Dialog von jeder Aktivität starten, und es startet die SearchResultsActivity
.
Ich möchte jetzt in der Lage sein, nach Bildern zu suchen, wenn der Benutzer ein ImageListActivity
ist, mit einem searchable_images.xml
, und verwenden Sie den Standard überall sonst.
Ich habe eine SearchResultsImageActivity
, die das folgende Metadatenelement enthält und das gleiche Element in ImageListActivity
verwendet.
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable_images"/>
auf die Suchtaste im ImageListActivity
drücken, erhalte ich die Standard-Suche von searchable_articles.xml
.
Wenn ich die default_searchable
zu SearchResultsImageActivity
ändern, wird immer die Bildersuche gestartet, und die Artikelsuche wird nie gestartet.
Wenn ich das Metadatenelement default_searchable
insgesamt lösche und searchable
Metadaten nur ausgewählte Aktivitäten hinzufüge, wird keine Suche gestartet.
Ich bin ziemlich sicher, dass dies möglich sein sollte, aber ich weiß nicht, was ich falsch mache.
Haben Sie das herausgefunden? – Dan
Ich glaube nicht, dass Sie es mit XML tun können, da die Ressource eins zu eins mit einer Absicht ist. Sie können möglicherweise die Ressource in Ihrem Code deaktivieren. – JPM