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