Comment transmettre les valeurs d’une activité à une activité précédente

Comment passer une valeur d’un écran à son écran précédent?

Considérez ce cas: j’ai deux activités. Le premier écran a un TextView et un bouton et la deuxième activité a un EditText et un bouton.

Si je clique sur le premier bouton, il doit passer à la seconde activité et l’utilisateur doit taper quelque chose dans la zone de texte. S’il appuie sur le bouton à partir du deuxième écran, les valeurs de la zone de texte doivent être déplacées vers la première activité et affichées dans la première activité TextView .

Pour capturer des actions effectuées sur une activité dans une autre, il faut trois étapes.

Lancez l’activité secondaire (votre activité «Modifier le texte») en tant que sous-activité en utilisant startActivityForResult partir de votre activité principale.

 Intent i = new Intent(this,TextEntryActivity.class); startActivityForResult(i, STATIC_INTEGER_VALUE); 

Au sein de la sous-activité, au lieu de simplement fermer l’activité lorsqu’un utilisateur clique sur le bouton, vous devez créer une nouvelle intention et inclure la valeur de texte saisie dans son ensemble de suppléments. Pour le renvoyer à l’appel parent setResult avant d’appeler finish pour fermer l’activité secondaire.

 Intent resultIntent = new Intent(); resultIntent.putExtra(PUBLIC_STATIC_STRING_IDENTIFIER, enteredTextValue); setResult(Activity.RESULT_OK, resultIntent); finish(); 

La dernière étape concerne l’activité appelante: remplacez onActivityResult pour écouter les rappels à partir de l’activité de saisie de texte. Obtenez le supplément de l’intention renvoyée pour obtenir la valeur de texte à afficher.

 @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch(requestCode) { case (STATIC_INTEGER_VALUE) : { if (resultCode == Activity.RESULT_OK) { Ssortingng newText = data.getSsortingngExtra(PUBLIC_STATIC_STRING_IDENTIFIER); // TODO Update your TextView. } break; } } } 

Vous pouvez accéder à des variables ou à des objects dans d’autres classes ou activités de deux manières.

A. firebase database

B. préférences partagées.

C. sérialisation d’object.

D. Une classe pouvant contenir des données communes peut être nommée en tant qu’utilitaires communs dont elle dépend.

E. Transmission de données via les intentions et l’interface parcellable.

Cela dépend des besoins de votre projet.

A. firebase database

SQLite est une firebase database Open Source intégrée à Android. SQLite prend en charge les fonctionnalités de firebase database relationnelles standard telles que la syntaxe SQL, les transactions et les instructions préparées.

Tutoriels – http://www.vogella.com/articles/AndroidSQLite/article.html

B. Préférences partagées

Supposons que vous vouliez stocker le nom d’utilisateur. Donc, il y aura maintenant deux choses un nom d’utilisateur clé , valeur de valeur.

Comment stocker

  // Create object of SharedPreferences. SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); //now get Editor SharedPreferences.Editor editor = sharedPref.edit(); //put your value editor.putSsortingng("userName", "stackoverlow"); //commits your edits editor.commit(); 

En utilisant putSsortingng (), putBoolean (), putInt (), putFloat (), putLong (), vous pouvez enregistrer votre dtatype souhaité.

Comment aller chercher

 SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); Ssortingng userName = sharedPref.getSsortingng("userName", "Not Available"); 

http://developer.android.com/reference/android/content/SharedPreferences.html

C. Sérialisation des objects

La serlization d’object est utilisée si nous voulons enregistrer un état d’object pour l’envoyer sur le réseau ou vous pouvez également l’utiliser.

Utilisez des haricots java et stockez-les comme l’un de ses champs et utilisez les getters et setter pour cela

Les JavaBeans sont des classes Java qui ont des propriétés. Considérez les propriétés comme des variables d’instance privées. Comme ils sont privés, la seule façon d’accéder à l’extérieur de leur classe est d’utiliser des méthodes de la classe. Les méthodes qui modifient la valeur d’une propriété sont appelées méthodes setter, et les méthodes qui récupèrent la valeur d’une propriété sont appelées méthodes getter.

 public class VariableStorage implements Serializable { private Ssortingng inSsortingng ; public Ssortingng getInSsortingng() { return inSsortingng; } public void setInSsortingng(Ssortingng inSsortingng) { this.inSsortingng = inSsortingng; } } 

Définissez la variable dans votre méthode de messagerie en utilisant

 VariableStorage variableStorage = new VariableStorage(); variableStorage.setInSsortingng(inSsortingng); 

Ensuite, utilisez l’object Serialzation pour sérialiser cet object et dans votre autre classe désérialiser cet object.

Dans la sérialisation, un object peut être représenté comme une séquence d’octets incluant les données de l’object, ainsi que des informations sur le type de l’object et les types de données stockés dans l’object.

Une fois qu’un object sérialisé a été écrit dans un fichier, il peut être lu à partir du fichier et désérialisé, ce qui signifie que les informations de type et les octets qui représentent l’object et ses données peuvent être utilisés pour recréer l’object en mémoire.

Si vous voulez un tutoriel pour ce renvoi, cliquez ici

http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html

Obtenir une variable dans d’autres classes

D. CommonUtilities

Vous pouvez créer une classe par vous-même qui peut contenir des données communes dont vous avez souvent besoin dans votre projet.

Échantillon

 public class CommonUtilities { public static Ssortingng className = "CommonUtilities"; } 

E. Transmission de données par des intentions

Veuillez vous référer à ce tutoriel pour cette option de transmission de données.

http://shri.blog.kraya.co.uk/2010/04/26/android-parcel-data-to-pass-between-activities-using-parcelable-classes/

vous n’avez pas à ..

appelez simplement newIntenet () à partir de la deuxième activité

 Intent retData=new Intent(); 

Ajouter des données pour repasser

 putExtras (retData.putExtra("userName", getUsrName())); 

aller de l’avant avec setResult

 setResult(RESULT_OK, retData); 

et peut ensuite finir

 finish(); 

startActivityForResult ()

Et voici un lien du SDK avec plus d’informations:

http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen

et faites défiler jusqu’à la partie intitulée “Renvoyer un résultat depuis un écran”

J’utilise souvent des variables statiques dans l’activité appelante avec des méthodes de définition statiques pour les définir.

De cette façon, je peux modifier les valeurs de toute activité à volonté, quel que soit le stream de contrôle exact entre les différentes activités.

Notez que cette astuce ne peut être utilisée que si vous ne vous souciez pas de l’instanciation de plusieurs copies de la même activité (classe) dans l’application, mais j’ai trouvé que c’était la plus simple à mettre en œuvre, et je l’utilisais le plus .

La meilleure façon de faire est de mettre la variable à une classe commune définie en dehors de la scope.

 public class Utils { public static Ssortingng mPosition; } 

à l’intérieur de votre code (par exemple, OnButtonClick etc …)

 Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); Utils.mPosition = mViewData.mPosition + ""; LogHelper.e(TAG, "before intent: " + Utils.mPosition); startActivityForResult(intent, Keys.PICK_CONTACT); 

à l’intérieur du code de

@Override public void onActivityResult (int requestCode, int resultCode, données d’intention) {if (requestCode == Keys.PICK_CONTACT) {if (resultCode == Activity.RESULT_OK) {Uri contactData = data.getData ();

  //you may use the variable here after intent result LogHelper.e(TAG, "after intent: " + Utils.mPosition); ....