1196 votes

Comment passer des données entre les activités dans Android ?

<p>J’ai un scénario où une fois connecté à travers une page de connexion, il y aura sur chaque activité bouton se déconnecter.</p> <p>En cliquant sur Déconnexion, je sera de passage l’id de session de l’utilisateur connecté à signout. Quelqu'un peut me guider sur la façon de conserver l’id de session disponible à toutes les activités ??</p> <p>Sinon, y a-t-il d’autres solutions à ce problème ?</p>

1362voto

user914425 Points 5467

Dans votre activité actuelle, créez une nouvelle intention:

 Intent i = new Intent(getApplicationContext(), NewActivity.class);
i.putExtra("new_variable_name","value");
startActivity(i);
 

Ensuite, dans la nouvelle activité, récupérez ces valeurs:

 Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("new_variable_name");
}
 

Utilisez cette technique pour passer des variables d'une activité à l'autre.

1114voto

Erich Douglass Points 21714

La méthode la plus simple consiste à transmettre l'ID de session à l'activité de connexion dans l'intention que vous utilisez pour démarrer l'activité:

 Intent intent = new Intent(getBaseContext(), SignoutActivity.class);
intent.putExtra("EXTRA_SESSION_ID", sessionId);
startActivity(intent)
 

Les documents pour Intents a plus d'informations (voir la section intitulée "Extras").

131voto

Charlie Collins Points 4942

En passant de l'Intention de suppléments est une bonne approche que Erich noté.

La Demande d'objet est une autre façon que, et c'est parfois plus facile lorsque l'on traite avec le même état à travers de multiples activités (plutôt que d'avoir à obtenir/mettre partout), ou des objets plus complexes que les primitives et les Cordes.

Vous pouvez étendre l'Application, puis définissez/obtenir ce que vous voulez et d'accéder à partir de n'importe quelle Activité (dans la même application) avec getApplication().

Aussi garder à l'esprit que d'autres approches que vous pourriez voir, comme statique, peut être problématique, car ils peuvent conduire à des fuites de mémoire. L'Application permet de résoudre ce trop.

88voto

Md. Shadiq Points 143

Classe de source:

     Intent myIntent = new Intent(this, NewActivity.class); 
    myIntent.putExtra("firstName", "Your First Name Here");
    myIntent.putExtra("lastName", "Your Last Name Here");
    startActivity(myIntent)
 

Classe de destination (classe NewActivity):

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view);    

    Intent intent = getIntent();

    String fName = intent.getStringExtra("firstName");
    String lName = intent.getStringExtra("lastName");

  }
 

78voto

Mayank Saini Points 964

Vous avez juste à envoyer des extras, tout en appelant votre intention

comme ceci:

Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("Variable Name","Value you want to pass");
startActivity(intent);

Maintenant sur la méthode OnCreate de votre SecondActivity vous pouvez récupérer les extras comme cela

Si la valeur que vous avez envoyé a été "long"

long value = getIntent().getLongExtra("Variable Name which you sent as an extra", defaultValue(you can give it anything));

Si la valeur que vous avez envoyé a été une "Chaîne"

String value = getIntent().getStringExtra("Variable Name which you sent as an extra");

Si la valeur que vous avez envoyé a été un "Boolean"

Boolean value = getIntent().getBooleanExtra("Variable Name which you sent as an extra",defaultValue);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: