On va un peu plus loin la création et la gestion des vues sous Android. Dans ce tutoriel, vous allez apprendre à gérer le passage d’une vue à une autre dans votre application.
Nous allons créer un nouveau projet TutoIntentEAC ayant comme activité : Activity1 (je vais travailler avec 2.2) .
Tout simplement on va faire une formulaire d'inscription qui permet de passer d'une activité à une autre en passant des données entre les activités .
Je pense que c'est facile maintenant de créer une telle interface
. non !
Activity_1.xml :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back"
android:orientation="vertical" >
<EditText
android:id="@+id/editTextNom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="64dp"
android:hint="Votre nom"
android:inputType="textPersonName"
/>
<EditText
android:id="@+id/editTextPrenom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editTextNom"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="Votre prénom"
android:inputType="textPersonName"
/>
<EditText
android:id="@+id/editTextMail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editTextPrenom"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="Votre
mail"
android:inputType="textEmailAddress"
/>
<EditText
android:id="@+id/editTextPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editTextMail"
android:layout_centerHorizontal="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="Votre mot de passe"
android:inputType="textPassword"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editTextPassword"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
>
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/exit"
android:text="Annuler"
/>
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/accept1"
android:text="Enregistrer"
/>
</LinearLayout>
</RelativeLayout>
Créons une autre activité maintenant Activity2.
Sélectionner le projet (clic droite): > New > Other > Android > Android Activity
et nommer l'activité Activity2 , et la layout activity_2.
Activity_2.xml :
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/back"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="27dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge"
/>
</RelativeLayout>
Dans l'activité Activity1.java , on récupère les composants par leurs ID , et on ajoute un écouteur d’événement au deux boutons.
public class Activity1 extends Activity implements OnClickListener {
EditText nom;
EditText prenom;
EditText mail;
Button enreg;
Button annuler;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
//On charge l'interface (layout) activity_1
setContentView(R.layout.activity_1);
//récupération des composants grâce à les ID
nom=(EditText)findViewById(R.id.editTextNom);
prenom=(EditText)findViewById(R.id.editTextPrenom);
mail=(EditText)findViewById(R.id.editTextMail);
enreg=(Button)findViewById(R.id.button1);
annuler=(Button)findViewById(R.id.button2);
//on applique un ecouteur d'évenemnt
au clique sur les 2 boutons
annuler.setOnClickListener(this);
enreg.setOnClickListener(this);
}
Nous allons faire en sorte que lorsqu’un nouvel utilisateur clique sur le bouton “Enregistrer”, il soit redirigé vers une autre vue (Activité 2) en affichant les informations saisis dans la deuxième vue.
 |
| Intent |
Pour le passage d’une activité à une autre c’est facile. On crée un nouveau Intent (Les intents peuvent être considérés comme des messages utilisées par le système afin de communiquer avec des applications, activités …
Le premier argument représente le contexte (facilement récupérable à l’aide de l’activité de départ) et le second représente l’activité d’arrivée.
On utilise la méthode “startActivityForResult” avec comme argument l’intent crée précédemment et un code.
Pour les actions de deux boutons on fait un onClickListener sur chaque bouton.
Dans la méthode onClick :
public void onClick(View arg0) {
switch (arg0.getId()) {
//selon le bouton :
case R.id.button1:
// bouton Enregister
//On crée un nouveau Intent
Intent i=new Intent(this,Activity2.class);
this.startActivityForResult(i, 1000);
break;
case R.id.button2:
//
bouton annuler
//fermer l'app
finish();
break;
}
}
Si vous testez le code , le passage vers l'autre activité s’effectue correctement mais les données d'utilisateur ne sont pas transmis
.
Passage de données d’une activité à une autre:
Pour transmettre des données, il suffit de les ajouter à l’intent crée précédemment en leur spécifiant une clé permettant de les identifier. (comme si on transmet l'argent 
).
Intent i=new Intent(this,Activity2.class);
// envoyer les données vers l'autre
activité
i.putExtra("cleNom", nom.getText().toString());
i.putExtra("clePrenom", prenom.getText().toString());
i.putExtra("cleMail", mail.getText().toString());
this.startActivityForResult(i,
1000);
Il nous reste que recevoir les données par la deuxième activité.
Dans la méthode onCreate() du Activity2.java , il faut tout d'abord vérifier qu'il y a des données transmis via Intent (Extras).Si oui , alors on récupère les donnés grâce au identifiant (Clé) .
String s1 = null;
if (this.getIntent().getExtras()!=null){ //recuperer le nom
grace à l'identifiant cleNom s1=this.getIntent().getExtras().getString("cleNom");}
la variable s1 contient donc la valeur du Nom saisis au premier activité , de même pour les autres variables transmises 
.
On peut afficher le contenu de cette variable dans un Toast (ici) lors de lancement de la deuxième activité dans onCreate() et après le code précédent on tape :
Toast msg=Toast.makeText(Activity2.this.getApplicationContext(), "Bienvenue "+s1,
Toast.LENGTH_LONG); msg.show();
Conclusion:
Après ce tutoriel , vous êtes capable de construire une application à plusieurs interfaces graphique qui interagissent entre eux (avec Passage des données etc. ) 
.
Désolé pour les fautes d'orthographe mais n'hésitez pas à me les dire pour les corriger
et n'hésitez pas de poser vos questions ainsi les commentaires .