wiki android par frandroid

Intégrer un système de préférence à une application

De FrAndroid - Android docs.

Vous allez apprendre dans ce tutoriel à mettre en place un système de configuration pour votre application !

Sommaire

Le fichier XML

Il vous faudra tout d'abord créer un fichier XML que vous nommerez par exemple preference.xml Créez le dans le dossier res/xml (Dans Eclipse : Clique droit sur le dossier res/ > New > Folder et xml )

Ce fichier commence comme tout fichier xml par

  1. <?xml version="1.0" encoding="utf-8"?>


Un fichier xml de préférence se compose de plusieurs écrans appelés PreferenceScreen (la plupart du temps vous n'en utiliserez qu'un) On le met en place comme suit :


  1. <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" 
  2. android:title="Préférences">
  3.  
  4. </PreferenceScreen>


À l'intérieur de ces écrans il va falloir mettre en place des éléments, qui permettront à l'utilisateur de modifier les préférences. On trouve : CheckBoxPreference, EditTextPreference et RingtonePreference.

Chaque éléments possédera un attribut android:title qui sera le titre affiché, et android:key, qui devra être unique et permettra de récupérer la préférence dans son application.

CheckBoxPreference

Les checkbox possèdent aussi android:summaryOn (le texte affiché en dessous de la checkbox lorsque celle-ci est cochée) et android:summaryOff (le texte affiché en dessous de la checkbox lorsque celle-ci n'est pas cochée)

android:defaultValue contiendra la valeur par défaut, et devra être égale à "true" (coché) ou "false" (décoché)

Un exemple :

  1. <CheckBoxPreference android:title="Ma super checkbox" android:key="macheckbox"
  2. android:summaryOn="La checkbox est cochée"
  3. android:summaryOff="La checkbox n'est plus cochée"
  4. android:defaultValue="true"
  5.  />


EditTextPreference

Les éditeurs de texte contiennent aussi les propriétés suivantes :

  • android:dialogTitle qui contient le titre de la boite de dialogue affichée
  • android:dialogMessage qui contient le message affiché au dessus de la zone de texte dans la boite de dialogue
  • android:dialogIcon qui contient le chemin vers la ressource de l'icon de la boite de dialogue

Un exemple :

  1. <EditTextPreference android:title="Mon EditText"
  2. android:dialogTitle="Modification du texte"
  3. android:dialogMessage="Entrez le nouveau texte"
  4. android:dialogIcon="@drawable/iconEditText" 
  5. android:defaultValue="Texte par défaut" />


À compléter !

L'Activity

Une fois votre fichier xml terminé, il va falloir l'afficher. Pour cela créez un nouveau fichier Preference.java dans votre dossier source. Voilà ce que doit être son contenu :


  1. package votrepackage;
  2.  
  3. import android.os.Bundle;
  4. import android.preference.PreferenceActivity;
  5.  
  6. public class Preference extends PreferenceActivity {
  7.  
  8.     /** Called when the activity is first created. */
  9.     @Override
  10.     public void onCreate(Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);
  12.  
  13.         addPreferencesFromResource(R.xml.preference);
  14.     }
  15. }


Il ne vous reste plus qu'à lancer cette activity depuis votre application, et c'est gagné :D

  1. i = new Intent(Main.this, Preference.class);
  2.  
  3. startActivity(i);


Utiliser dans l'application

Maintenant que vous savez gérer les préférences, voyons comment les utiliser dans votre application ;)

Commençons par créer un objet SharedPreferences qui représentera nos préférences :

  1. SharedPreferences pref=PreferenceManager.getDefaultSharedPreferences(this);


Vous allez ensuite utiliser une fonction SharedPreferences.getType("key",defaulvalue) où type représente le type de la donnée (Boolean, String, Int, Float ou Long) Un exemple pour récupérer la valeur d'un CheckBoxPreference, où android:key="mabox" :

  1. pref.getBoolean("mabox", true)




Voilà, vous savez maintenant gérer les préférences dans vos applications :D