2010-05-08 7 views
0

Dites que j'ai 2 activités (ActivityOne et ActivityTwo). Comment appeler ActivityTwo d'ActivityOne? Alors, comment pourrais-je retourner à ActivityOne à partir d'ActivityTwo? Par exemple, j'ai une liste avec tous les contacts sur le téléphone hôte. Lorsque je tape sur un contact, une autre activité affiche des informations et permet d'éditer ce contact. Ensuite, je pouvais appuyer sur le bouton retour, et je revenais à l'état exact dans lequel se trouvait ActivityOne avant que j'appelle ActivityTwo. Je pensais à un objet d'intention, mais je ne suis pas sûr. Quelqu'un pourrait-il poster du code?Appeler d'autres activités dans une activité?

Répondre

3

Dans votre première activité (AcitvityOne), vous pouvez appeler

Intent intent = new Intent(this, ActivityTwo.class); 
startActivityForResult(intent, CODE); 

Ensuite, vous pouvez remplacer

public void onActivityResult(int reqCode, int resultCode, Intent data) { 

pour recevoir le résultat de cette activité

+1

Si vous n'avez pas besoin des résultats de 'ActivityTwo', vous pouvez utiliser' startActivity() 'et ignorer l'implémentation de' onActivityResult() '. – CommonsWare

3

Dans votre exemple, il semble que vous souhaiterez transmettre des données entre l'activité 1 et l'activité 2 (à savoir, la référence du contact que vous souhaitez modifier), vous devez donc utiliser un ensemble avec votre intention dans l'activité 1.

Intent myIntent = new Intent(this, ActivityTwo.class); 
    myIntent.putExtra("CONTACT", position); 
    this.startActivity(myIntent); 

« CONTACT » est une clé et la position est une valeur (position aurait été définie auparavant, il pourrait être tout ce que vous voulez qu'il soit, par exemple un entier. La façon dont vous récupériez est légèrement différent en fonction sur quel type il est, notez le getInt() dans le code Activity Two ci-dessous).

Et dans l'activité Deux, en onCreate()

Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     contact = extras.getInt("CONTACT"); 
     /**Do what you want with the integer value you have retrieved**/ 
    } 

Quant à votre autre question, le bouton de retour supprime l'activité en cours à partir du haut des tâches pile et donc, vous revenez à l'activité précédente, normalement dans le même état que vous l'avez laissé. Toutefois, si le téléphone est à court de mémoire, Android peut tuer un processus ou une activité, il est donc théoriquement possible que votre activité précédente ne s'affiche pas exactement dans le même état que vous l'avez laissé. Si vous avez des données importantes, vous devez les enregistrer avant de lancer l'activité deux. Si vous voulez simplement revenir à l'activité un dans le même état pour la convivialité, alors il est bon de compter sur le bouton de retour.

Questions connexes