Échange des données entre activités


Pour travailler cet atelier, nous avons besoin à créer deux activités, chacune est associée à un fichier de présentation xml. En plus, nous avons besoin à déclarer la deuxième activité dans le fichier AndroidManifest.xml.
Pour la démonstration, nous pourrons travailler sur un cas concret. Par exemple, créons une activité sous forme d’un formulaire qui regroupe les informations suivantes :
  • Nom
  • Prénom
  • Date de naissance
  • Numéro GSM
  Après le remplissage de ces informations, il les transmit vers une autre activité pour les afficher.
Dans un premier temps, nous commençons par la mise en forme du formulaire main.xml sous format graphique comme suit :



le code équivalent de cette présenatation  est le suivant :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:stretchColumns="2" >

    <EditText
        android:id="@+id/t_nom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/v_prenom"
        android:hint="@string/nom" >

        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/v_nom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/nom"
        android:layout_alignBottom="@+id/nom"
        android:layout_alignParentLeft="true"
        android:text="Nom"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/v_prenom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/t_nom"
        android:text="Prénom"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/t_prenom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/t_nom"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@+id/v_prenom"
        android:hint="Ecrit votre prenom" />

    <TextView
        android:id="@+id/date_naissance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/t_prenom"
        android:layout_centerHorizontal="true"
        android:text="Date de naissance"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <DatePicker
        android:id="@+id/datePicker1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/date_naissance"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/v_gsm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/datePicker1"
        android:layout_marginTop="29dp"
        android:text="Numéro GSM"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/t_gsm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/v_gsm"
        android:layout_alignBottom="@+id/v_gsm"
        android:layout_toRightOf="@+id/v_gsm"
        android:hint="votre numéro GSM"
android:inputType="number" />


    <Button
        android:id="@+id/b1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/t_gsm"
        android:layout_marginTop="23dp"
        android:text="Editer" />

</RelativeLayout>

Après le fichier de présentation, nous proposons le fichier java récupérant les informations de notre formulaire :
package com.formation.form;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;

public class Main extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
     
      // Les variables réceptrices
   Button b;
   EditText nom,prenom,gsm;
   String s_nom,s_prenom,s_gsm,dt;
   DatePicker d;
      @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        // La récupération des données à transmettre
        nom=(EditText)findViewById(R.id.t_nom);
        d=(DatePicker)findViewById(R.id.datePicker1);
        prenom=(EditText)findViewById(R.id.t_prenom);
        gsm=(EditText)findViewById(R.id.t_gsm);
        b=(Button)findViewById(R.id.b1);
        b.setOnClickListener(this);
    }

      @Override
      public void onClick(View v) {
           
            Intent i;
            i= new Intent(this,Main2.class);
             
            // L’envoi des informations à travers putExtra
            i.putExtra("val1",nom.getText().toString());
            i.putExtra("val2",prenom.getText().toString());
            i.putExtra("val3",gsm.getText().toString());
            i.putExtra("val4",d.getYear());
            startActivity(i);
           
      }
}

Le fichier de présentation recevant les informations de notre formulaire :




Le format équivalent en xml :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/b2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Retour" />

    <EditText
        android:id="@+id/largetxt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0.30"
        android:inputType="textMultiLine" >

        <requestFocus />
    </EditText>

</LinearLayout>

Le fichier java récupérant les informations de notre formulaire :


package com.formation.form;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Main2 extends Activity implements OnClickListener {
        
      // Les variables réceptrices
         Button b;
         EditText v;
         String s1,s2,s3,s4;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        v=(EditText)findViewById(R.id.largetxt);
        b=(Button)findViewById(R.id.b2);
      
        // La récupération des données transmises
        Bundle extras = getIntent().getExtras();
        if (extras != null) {   
             s1 = extras.getString("val1");
             s2 = extras.getString("val2");
             s3 = extras.getString("val3");
             s4 = extras.getString("val4");}
      
        // Affichage des informations reçus
        v.setText("Bonjour "+s1+"-"+s2+"  votre numéro de gsm est "+s3+ "  votre date de naissance est "+s4);
        b.setOnClickListener(this);
      
      }
      @Override
      public void onClick(View v) {
            // TODO Auto-generated method stub
           
            Intent j;
           
            j= new Intent(this,Main.class);
            startActivity(j);
           
     
      }

     
}


Et finalement, il nous reste à déclaré la deuxième activité dans le fichier AndroidManifest.xml comme suit :




Format xml associe :


<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.formation.form"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".Main"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
                <activity
            android:name="Main2"
            android:label="deuxieme activité" >
           
        </activity>
    </application>


Voila, notre application est achevée, il nous reste à voir les fruits de notre travail par son exécution sur l’émulateur.

2 commentaires: