2010-12-09 34 views
2

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?

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"