J'ai des fonctionnalités de recherche dans mon application. Lorsque la barre de recherche est invoquée à partir d'une "activité d'affichage" et que l'utilisateur effectue une recherche, je souhaite terminer l'activité de présentation et amener l'utilisateur à l'activité de recherche. Est-il possible de savoir si SearchManager.onDismissListener est invoqué en raison d'une recherche effectuée? Ce que je veux éviter, c'est avoir plusieurs écrans de résultats de recherche> show> résultats de recherche> show etc, et plutôt "revenir" aux résultats de recherche chaque fois qu'une recherche est effectuée, et donc seulement une activité de recherche et une Afficher l'activité dans la pile à un moment donné.Comment puis-je terminer l'activité en cours lors d'une recherche sur Android?
2
A
Répondre
2
Si je comprends bien votre question, vous souhaitez empêcher la création de l'activité de recherche plusieurs fois.
The impact of the search dialog on your activity lifecycle dans les docs Android a l'explication de ce que vous voulez. Fondamentalement, vous souhaitez définir android:launchMode
à "singleTop"
lorsque vous définissez votre activité de recherche dans le manifeste. Dans l'exemple au lien, alors vous avez quelque chose comme ceci:
<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>
Mais attention à suivre leurs conseils pour le traitement des intentions avec onCreate
et onNewIntent
qui, plutôt que dupliquer ici, je vais vous référer à ce lien.
Vous pouvez faire la même chose pour ce que votre activité de spectacle avec le android:launchMode="singleTop"