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 deuxième activité et ici 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 passer à la première activité et qui doivent être affichées dans la première activité TextView
.
android
android-activity
Kumar
la source
la source
Réponses:
Pour capturer les 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é à l'aide
startActivityForResult
de votre activité principale.Dans la sous-activité, plutôt que 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 d'extras. Pour le renvoyer à l'appel du parent
setResult
avant d'appelerfinish
pour fermer l'activité secondaire.La dernière étape est dans l'activité d'appel: Remplacer
onActivityResult
pour écouter les rappels de l'activité d'entrée de texte. Obtenez le supplément de l'intention renvoyée pour obtenir la valeur de texte que vous devriez afficher.la source
new Intent(null);
était "trop ambigu" et j'ai dû le changernew Intent();
.Il existe deux façons d'accéder à des variables ou à des objets dans d'autres classes ou activités.
A. Base de données
B. préférences partagées.
C. Sérialisation d'objets.
D. Une classe qui peut contenir des données communes peut être nommée comme utilitaires communs, cela dépend de vous.
E. Transmission des données via les intentions et l'interface parcelable.
Cela dépend des besoins de votre projet.
A. Base de données
SQLite est une base de données Open Source intégrée à Android. SQLite prend en charge les fonctionnalités de base de données 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 souhaitiez stocker le nom d'utilisateur. Il y aura donc maintenant deux choses: un nom d' utilisateur clé , une valeur de valeur.
Comment conserver
En utilisant putString (), putBoolean (), putInt (), putFloat (), putLong (), vous pouvez enregistrer votre dtatype souhaité.
Comment récupérer
http://developer.android.com/reference/android/content/SharedPreferences.html
C. Sérialisation d'objets
La sérialisation d'objet est utilisée si nous voulons enregistrer un état d'objet pour l'envoyer sur le réseau ou si vous pouvez également l'utiliser à vos fins.
Utilisez java beans et stockez-y comme l'un de ses champs et utilisez des getters et des 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. Puisqu'ils sont privés, le seul moyen d'y accéder depuis l'extérieur de leur classe est d'utiliser les méthodes de la classe. Les méthodes qui modifient la valeur d'une propriété sont appelées méthodes de définition et les méthodes qui récupèrent la valeur d'une propriété sont appelées méthodes de lecture.
Définissez la variable dans votre méthode de messagerie en utilisant
Utilisez ensuite la sérialisation d'objet pour sérialiser cet objet et dans votre autre classe désérialisez cet objet.
Dans la sérialisation, un objet peut être représenté comme une séquence d'octets qui comprend les données de l'objet ainsi que des informations sur le type de l'objet et les types de données stockées dans l'objet.
Une fois qu'un objet sérialisé a été écrit dans un fichier, il peut être lu à partir du fichier et désérialisé, c'est-à-dire que les informations de type et les octets qui représentent l'objet et ses données peuvent être utilisés pour recréer l'objet en mémoire.
Si vous voulez un tutoriel pour cela, reportez-vous à ce lien
http://javawithswaranga.blogspot.in/2011/08/serialization-in-java.html
Obtenir une variable dans d'autres classes
D. Services courants
Vous pouvez créer vous-même une classe qui peut contenir des données communes dont vous avez fréquemment besoin dans votre projet.
Échantillon
E. Transmission de données par des intentions
Veuillez consulter 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/
la source
vous n'avez pas à ...
Appelez simplement newIntent () à partir de la deuxième activité
Ajouter des données à renvoyer
Allez-y avec setResult
Et peut alors finir
la source
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 "Retour d'un résultat à partir d'un écran"
la source
J'utilise souvent des variables statiques dans l'activité d'appel avec des méthodes de définition statiques pour les définir.
De cette façon, je peux changer les valeurs de n'importe quelle activité à volonté, quel que soit le flux 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 plus d'une copie de la même activité (classe) dans l'application, mais j'ai trouvé que c'était la plus simple à implémenter, et je l'utilise le plus .
la source
La meilleure façon de faire ici est de placer une variable dans une classe commune qui est définie en dehors de la portée
à l'intérieur de votre code (par exemple OnButtonClick etc ...)
à l'intérieur du code de
@Override public void onActivityResult (int requestCode, int resultCode, Intent data) {if (requestCode == Keys.PICK_CONTACT) {if (resultCode == Activity.RESULT_OK) {Uri contactData = data.getData ();
la source