2009-12-16 6 views
1

Je veux afficher le résultat de la recherche sur l'écran, j'ai mis en œuvre de telle manière que. Dans le formulaire de recherche, l'utilisateur remplit les champs 'search' et 'search location' je place les valeurs dans le bean et ce bean est statique pour que je puisse y accéder de partout.Android afficher les résultats de la recherche approche

i Lancer la recherche Ensuite l'intention de l'écran de résultats en utilisant

Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class); 
startActivity(mainIntent); 

sur la méthode de l'activité 'SearchResults de « oncreate » i charger des données au nom de haricot statique valeurs rempli de formulaire de recherche, puis afficher les données.

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     loadDataAndSetupUI(); 
     super.onCreate(savedInstanceState); 
    } 

Ma question est la bonne approche pour l'utiliser ou dans Android il y a une autre approche préférable?

une idée rapide ou un code rapide est apprécié.

Répondre

2

Eh bien, généralement, le gestionnaire onCreate de votre activité de l'écran de résultats est certainement un bon endroit pour le faire. Cependant, en lisant entre les lignes de votre question, il y a au moins deux choses qui peuvent causer des problèmes:

D'abord, utiliser un objet statique pour transporter des valeurs d'une activité à une autre est définitivement une mauvaise approche. C'est parce que pour un, il existe déjà un mécanisme bien défini dans Android pour l'échange de données entre les contextes, et c'est par Bundles et Intents. Donc, pour dire à votre activité résultat sur les choses que votre utilisateur recherche, faire quelque chose comme ceci:

Intent mainIntent = new Intent(SearchVenueResults.this, SearchResults.class); 
mainIntent.putExtra("search_query", getValueFromSearchBox()); 
startActivity(mainIntent); 

Dans votre activité SearchResults, faire en onCreate:

public void onCreate(Bundle savedInstanceState) { 
    String searchQuery = getIntent().getExtras().getStringExtra("search_query"); 
    loadDataAndSetupUI(searchQuery); 
    super.onCreate(savedInstanceState); 
} 

De plus, Android se comporte assez beaucoup imprévisible par rapport à la durée de vie des variables statiques. J'ai remarqué à plusieurs reprises que maintenir une variable statique dans une classe d'activité ne garantit pas que cette variable est toujours valide lors du lancement d'une nouvelle activité, donc vous ne devriez jamais compter sur la statique comme un moyen d'échanger des données entre les classes. Deuxièmement, vous ne voulez certainement pas mettre en œuvre loadDataAndSetupUI pour fonctionner de façon synchrone. Cela bloquerait votre interface utilisateur jusqu'à ce que la recherche soit terminée, et Android pourrait même décider de supprimer votre application. Utilisez plutôt AsyncTask pour les travaux d'arrière-plan.

+0

Merci ami très bonne solution. –

Questions connexes