web-dev-qa-db-fra.com

Comment envoyer une chaîne d'une activité à une autre?

J'ai donc une chaîne dans activity2

String message = String.format(
"Current Location \n Longitude: %1$s \n Latitude: %2$s", lat, lng); 

je veux insérer cette chaîne dans un champ de texte dans activity1. Comment puis-je le faire? Merci d'avance.

25
Luch Filip

Vous pouvez utiliser les intentions, qui sont des messages envoyés entre les activités. Dans une intention, vous pouvez mettre toutes sortes de données, String, int, etc.

Dans votre cas, dans activity2, avant de passer à activity1, vous allez stocker un message String de la manière suivante:

Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", message);
startActivity(intent);

Dans activity1, dans onCreate(), vous pouvez obtenir le message String en récupérant une Bundle (qui contient tous les messages envoyés par l'activité appelante) et appeler getString():

Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");

Ensuite, vous pouvez définir le texte dans la TextView:

TextView txtView = (TextView) findViewById(R.id.your_resource_textview);    
txtView.setText(message);

J'espère que cela t'aides !

83
jbihan

Vous pouvez envoyer des données d’une activité à une autre avec une variable Intent

Intent sendStuff = new Intent(this, TargetActivity.class);
sendStuff.putExtra(key, stringvalue);
startActivity(sendStuff);

Vous pouvez ensuite récupérer ces informations dans la deuxième activité en obtenant l'intention et en extrayant la chaîne en plus. Faites cela dans votre méthode onCreate().

Intent startingIntent = getIntent();
String whatYouSent = startingIntent.getStringExtra(key, value);

Il ne vous reste plus qu'à appeler setText sur votre TextView et à utiliser cette chaîne. 

13
Rarw

Dites qu'il y a EditText et1 dans votre MainActivity et vous voulez le transmettre à SecondActivity

String s=et1.getText().toString();
Bundle basket= new Bundle();
basket.putString("abc", s);
Intent a=new Intent(MainActivity.this,SecondActivity.class);
a.putExtras(basket);
startActivity(a);

maintenant dans la deuxième activité, disons que vous voulez mettre la chaîne passée de EditText et1 à TextView txt1 de SecondActivity

Bundle gt=getIntent().getExtras();
str=gt.getString("abc");
txt1.setText(str);
4
Aditya Harsh
 Intent intent = new Intent(activity1.this, activity2.class);
 intent.putExtra("message", message);
 startActivity(intent);

Dans activity2, dans onCreate (), vous pouvez obtenir le message String en récupérant un paquet (qui contient tous les messages envoyés par l'activité appelante) et en appelant getString ():

  Bundle bundle = getIntent().getExtras();
  String message = bundle.getString("message");
3
Sudhir singh

DEUX CAS

Il y a deux situations possibles quand on parle de transmettre des données entre des activités 

Supposons qu'il y a deux activités A et B et qu'il existe un String X. et vous êtes dans l'activité A

Maintenant deux cas 

1) A-> B
2) A <-B

CAS 1): La chaîne X est dans A et vous voulez l'obtenir dans l'activité B.

C'est très simple. 

Dans l'activité A. 

1) Créer une intention
2) Put Extra value
3) startActivity 

Intent i = new Intent(A.this, B.class);
i.putExtra("Your_KEY",X);
startActivity(i)

Dans l'activité B 

Dans la méthode onCreate, la chaîne X est récupérée à l’aide de la clé que vous avez utilisée lors du stockage de X (Your_KEY). 

Intent i = getIntent();
String s = i.getStringExtra("Your_KEY");

Cas 2)
Cette affaire est un peu délicate si vous êtes nouveau dans Android développement.
Parce que vous êtes dans l’activité A, vous passez à l’activité B, récupérez la chaîne, revenez à l'activité A et récupérez le collecté Chaîne ou données. Voyons comment gérer cette situation. 

Dans l'activité A
1) Créer une intention
2) démarrer une activité avec un code de demande. 

Intent i = new Intent(A.this, B.class);
startActivityForResult(i,your_req_code);

Dans l'activité B
1) Mettez la chaîne X dans l'intention
2) Définir le résultat
3) Terminer l'activité 

Intent returnIntent = new Intent();
returnIntent .putString("KEY",X);
setResult(resCode,returnIntent);   // for the first argument, you could set Activity.RESULT_OK or your custom rescode too
finish();

Encore dans l'activité A
1) Méthode OverRide onActivityResult 

onActicvityResult(int req_code, int res_code, Intent data)
{
       if(req_code==your_req_code)
       {
          String X = data.getStringExtra("KEY")
       }
}

Compréhension plus poussée du cas 2

Vous pourriez vous demander quel est le reqCode, resCode dans le onActicvityResult(int reqCode, resCode, Intent data) 

reqCode est utile lorsque vous devez identifier à partir de quelle activité vous obtenez un résultat. 

Supposons que vous avez deux boutons, un bouton démarre Appareil photo (vous cliquez sur une photo et obtenez le bitmap de cette image dans votre activité), un autre bouton lance GoogleMap (vous récupérez les coordonnées actuelles de votre position). Par conséquent, pour distinguer les résultats des deux activités, démarrez CameraActivty et MapActivity avec des codes de demande différents. 

resCode: est utile lorsque vous devez faire la distinction entre comment les résultats reviennent à la demande d'activité. 

Par exemple: vous démarrez l'activité de la caméra. Lorsque l'activité de l'appareil photo commence, vous pouvez soit prendre une photo, soit simplement revenir à la demande d'activité sans prendre de photo en appuyant sur le bouton Précédent. Donc, dans cette situation, l'activité de votre caméra envoie le résultat avec différents resCode ACTIVITY.RESULT_OK et ACTIVITY.RESULT_CANCEL, respectivement. 

Liens pertinents 

En savoir plus sur le résultat

2
Rohit Singh

Pour insérer le texte de activity2 dans activity1, vous devez d’abord créer une fonction visit dans activity2.

public void visitactivity1()
{
    Intent i = new Intent(this, activity1.class);
    i.putExtra("key", message);
    startActivity(i);
}

Après avoir créé cette fonction, vous devez l’appeler depuis votre fonction onCreate () de activity2:

visitactivity1();

Ensuite, passez au fichier Java activity1. Dans sa fonction onCreate (), créez un objet Bundle , récupérez le message précédent via sa clé via cet objet et stockez-le dans une chaîne.

    Bundle b = getIntent().getExtras();
    String message = b.getString("key", ""); // the blank String in the second parameter is the default value of this variable. In case the value from previous activity fails to be obtained, the app won't crash: instead, it'll go with the default value of an empty string

Placez maintenant cet élément dans un TextView ou un EditText, ou selon l’élément de présentation de votre choix, à l’aide de la fonction setText ().

0
Rafi

Vous pouvez utiliser GNLauncher, qui fait partie d'une bibliothèque d'utilitaires que j'ai écrite dans les cas où de nombreuses interactions avec l'activité sont requises. Avec la bibliothèque, c'est presque aussi simple que d'appeler une fonction sur l'objet Activity avec les paramètres requis. https://github.com/noxiouswinter/gnlib_Android/wiki#gnlauncher

0
jinais

Les intentions sont intenses .

Les intentions sont utiles pour transmettre des données dans le cadre Android. Vous pouvez communiquer avec vos propres Activities et même d’autres processus. Consultez le guide du développeur et si vous avez des questions spécifiques (c'est beaucoup à digérer), revenez.

0
Collin Flynn