Facebook Twitter Google Plus RSS Feed Email

    samedi 12 octobre 2013

    [Tutoriel] : Changement de vues sous Android (Intent)


    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.
    Le passage d'une vue à une autre signifie qu'il y a un changement d'activités. Pour pouvoir essayer ce tuto , il faut voir ces deux articles : Notions de Base et Design&Tosat&AlertDalog .Smiley

    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 Smiley . non !
    Téléchargement de ressources 

    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.Smiley
        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 Smiley .

        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 Smiley).
        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 Smiley.
        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. ) Smiley.
        Voici le code source:(Android 2.2)



        Désolé pour les fautes d'orthographe mais n'hésitez pas à me les dire pour les corriger Smiley et n'hésitez pas de poser vos questions ainsi les commentaires .


        Pays/territoire : Sidi Bouzid, Tunisie

        4 commentaires:

        Sauvegarder le lien

        Twitter Delicious Facebook Digg Stumbleupon Favorites More

        Recherche

        Pages vues

        Articles populaires

        Notre page facebook

        Libellés

        Tutoriel (17) Android (12) Activite (10) Actualite (6) Event (5) 2014 (3) Compétition (2) MySQL (2) json (2) php (2) webservices (2) APK (1) Design (1) Formation (1) KitKat (1) SIB (1) Securité (1) sfax (1)
        Copyright © ENIS Android Club