Gestion de la persistance par le biais de la classe Application


Gestion de la persistance par le biais de la classe Application

Pour la démonstration, concevons une activité qui invite l’utilisateur à saisir le nom de son ami, puis elle l’aiguille vers un formulaire avec une zone de saisie et un bouton de validation. Après la validation, il affiche le nom saisi dans une zone texte de la première activité et ainsi de suite. Si nous redémarrons l’application, nous trouverons qu’elle gardera toujours les anciens entrés, le schéma ci-dessus illustre le fonctionnement de notre application :








Dans un premier temps, nous commençons par la mise en forme du formulaire main.xml sous format graphique comme suit :



Le deuxième fichier de présentation, recevant les informations d’entrées de notre formulaire, est schématisé comme suit :




Après les fichiers de présentation, nous proposons la classe Application récupérant les informations de notre formulaire (frecord.java) :


package com.formation.share;
import java.util.ArrayList;

import android.app.Application;

public class frecord extends Application {
   // Déclaration d’un tableau pour le stockage
     
         ArrayList<String> Amis;
   //Méthode lecture du tableau
public ArrayList<String> getAmis() {
      return Amis;
}

   //Méthode de écriture dans le tableau
public void setAmis(String amis) {
      Amis.add( amis);
}

@Override
public void onCreate() {
      // TODO Auto-generated method stub
      super.onCreate();
      Amis= new ArrayList<String>();
}

}

Le fichier java (activité) référenciant et récupérant les informations du premier formulaire (Main.java) :
package com.formation.share;

import java.util.ArrayList;

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.TextView;

public class Main extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
      // Déclaration des variables réceptrices des éléments graphiques et de la classe Application
      Button b;
    TextView t;
    frecord application;
      @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
   
     // Récupération d’une instance de la classe Application
        application=(frecord) getApplication();
      
        b=(Button)findViewById(R.id.b1);
        t=(TextView)findViewById(R.id.textView1);
        b.setOnClickListener(this);
    }
     
      //l’affichage du contenu du tableau après l’insertion dans l’autre formulaire
      @Override
      protected void onResume() {
            // TODO Auto-generated method stub
            super.onResume();
            StringBuffer s=new StringBuffer();
            ArrayList<String> list=application.getAmis();
            for (String amis : list) {
                  s.append(amis+"\n");
            }
            t.setText(s.toString());
      }
      @Override
      public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent i=new Intent(this,Main2.class);
            startActivity(i);
      }
}

Le fichier java (activité) référenciant et récupérant les informations du deuxième formulaire (Main2.java) :
package com.formation.share;

import android.app.Activity;
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 {
    /** Called when the activity is first created. */
      // Déclaration des variables réceptrices des éléments graphiques et de la classe Application
      Button b;
      EditText t;
      frecord application;
      @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
     // Récupération d’une instance de la classe Application
        application=(frecord) getApplication();
        b=(Button)findViewById(R.id.b2);
        t=(EditText)findViewById(R.id.editText1);
        b.setOnClickListener(this);
       
    }
      @Override
      public void onClick(View v) {
            // TODO Auto-generated method stub
            // Insertion après la clique sur le bouton
            application.setAmis(t.getText().toString());
            finish();
      }
}

Et finalement, il nous reste à déclarer la deuxième activité et le nom de la classe Application 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.share"
    android:versionCode="1"
    android:versionName="1.0" >

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" android:name=".frecord">
        <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 application" >
           
        </activity>
    </application>

</manifest>

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


Aucun commentaire:

Enregistrer un commentaire