L'objet d'intention est défini en tant qu'objet de messagerie. En tant qu'objet de message, son but est de communiquer avec d'autres composants de l'application. Dans cette recette, nous allons vous montrer comment transmettre des informations avec l'intention et comment les récupérer.
Se préparer
Cette recette reprendra d'où la précédente s'est terminée. Nous appellerons ce projet SendData.
Comment faire...
Puisque cette recette est basée sur la recette précédente, la plupart du travail est déjà fait.
Nous ajouterons un élément EditText à l'activité principale pour que nous ayons quelque chose à envoyer à SecondActivity. Nous allons utiliser la vue TextView (générée automatiquement) pour afficher le message. Voici les étapes complètes:
1. Ouvrez activity_main.xml, supprimez l'élément <TextView> existant et ajoutez l'élément <EditText> suivant:
<EditText
android: id = "@ + id / editTextData"
android: layout_width = "match_parent"
android: layout_height = "wrap_content" />
L'élément <Button> que nous avons créé dans la recette précédente ne change pas.
2. Maintenant, ouvrez le fichier MainActivity.java et modifiez le
Méthode onClickSwitchActivity () comme suit:
public void onClickSwitchActivity (Voir la vue) {
EditText editText = (EditText) findViewById (R.id.editTextData); String texte = editText.getText (). ToString ();
Intention intention = nouvelle intention (this, SecondActivity.class);
intention.putExtra (Intent.EXTRA_TEXT, texte);
startActivity (intention);
}
3. Ensuite, ouvrez le fichier activity_second.xml et modifiez l'élément <TextView> pour inclure l'attribut ID:
<TextView
android: id = "@ + id / textViewText"
android: text = "@ chaîne / hello_world"
android: layout_width = "wrap_content"
android: layout_height = "wrap_content" />
4. La dernière modification consiste à modifier la deuxième activité pour rechercher ces nouvelles données et les afficher à l'écran. Ouvrez SecondActivity.java et éditez onCreate () comme suit:
void protégé onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_second);
TextView textView = (TextView) findViewById (
R.id.textViewText);
if (getIntent ()! = null && getIntent (). hasExtra (
Intent.EXTRA_TEXT)) {
textView.setText (getIntent (). getStringExtra (
Intent.EXTRA_TEXT));
}
}
5. Maintenant, exécutez le projet. Tapez du texte sur l'activité principale et appuyez sur Lancer la deuxième activité pour la voir envoyer les données.
HD-
Comment ça marche...
Comme prévu, l'objet d'intention fait tout le travail. Nous avons créé une intention comme dans la recette précédente, puis ajouté des données supplémentaires. Avez-vous remarqué l'appel à la méthode putExtra ()? Dans notre exemple, nous avons utilisé l'attribut .exTRA_TEXT déjà défini comme identifiant, mais nous n'avons pas eu à le faire. Nous pouvons utiliser n'importe quelle clé que nous voulons (vous avez déjà vu ce concept si vous connaissez les paires nom / valeur).
Le point clé sur l'utilisation des paires nom / valeur est que vous devez utiliser le même nom pour récupérer les données. C'est pourquoi nous avons utilisé le même identifiant de clé lorsque nous avons lu les données supplémentaires avec
getStringExtra ().
La deuxième activité a été lancée avec l'intention que nous avons créée, il s'agit donc simplement d'obtenir l'intention et de vérifier les données envoyées avec. Nous faisons cela dans onCreate ():
textView.setText (getIntent (). getStringExtra (Intent.EXTRA_TEXT));
Il y a plus...
Nous ne sommes pas limités à simplement envoyer des données String. L'objet d'intention est très flexible et prend déjà en charge les types de données de base. Revenez à Android Studio et cliquez sur la méthode putExtra. Puis appuyez sur Ctrl et la barre d'espace. Android Studio affichera la liste de saisie semi-automatique afin que vous puissiez voir les différents types de données que vous pouvez stocker.