Chapitre 4.2: SharedPreferences et PreferenceActivity

Image non disponible

Android2ee


La Formation et l'Expertise Android à votre service



Ce chapitre vous explique un objet particulièrement utile pour la persistence des éléments de type primitif: les SharedPreferences.


Cet article est extrait du livre « Android, A Complete Course », disponible sur Android2ee.com.

Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ce code est libre de toute utilisation, mais n'est pas distribuable.


La distribution du code est réservée au site :

http://android2ee.com.


La propriété intellectuelle du code appartient à :

Mathias Séguy.

ISBN : 979-10-90388-00-0

Copyright © 2011 by Mathias Séguy


Commentez

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Gestion des préférences

Il y a trois niveaux de préférences, votre activité, votre application et les préférences système. Chacune d'elles s'obtient par un appel spécifique.

Pour les préférences de l'application :

 
Sélectionnez
Context context = getApplicationContext();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
Pour des préférences stockées dans un fichier de votre application :
String MY_PREF="mesPrefs";
SharedPreferences prefs = PreferenceManager.getSharedPreferences(MY_PREFS,Activity.MODE_PRIVATE);
 
Boolean valueBool=prefs.getBoolean(key, defaultValueBool);
Float valueFlo=prefs.getFloat(key, defaultValueFloat);
Integer valueInt=prefs.getInt(key, defaultValueInt);
Long valueLong=prefs.getLong(key, defaultValueLong);
String valueStr=prefs.getString(key, defaultValueStr);

key est la clef de la propriété et defaultValue** est la valeur par défaut. Si la clef n'est pas trouvée, la valeur par défaut est renvoyée.

L'accès aux autres préférences n'est pas clair, il faudrait utiliser getPreference(Activity.MODE_PRIVATE) pour les préférences de l'activité et getDefaultSharedPreference pour les préférences du système.

I-A. Mise en place de préférences spécifiques à votre application

Ces préférences se définissent au travers d'un fichier XML stocké sous res\xml\. Ce fichier XML est appelé par la méthode addPreferenceFromRessource(R.xml.mespreferences) qui charge dans l'objet shareReference de l'application les valeurs contenues dans ce fichier. Android dispose d'un éditeur générique pour afficher ce fichier et permettre à l'utilisateur de le modifier. Ces préférences peuvent aussi être modifiées de manière programmatique.

I-A-1. Modification programmatique

Une fois que vous avez récupéré votre objet SharedPreference, il vous suffit d'utiliser son Editor pour le modifier.

 
Sélectionnez
SharedPreferences.Editor editor=prefs.edit();
      editor.putBoolean(key, value);
      editor.putFloat(key, value);
      editor.putInt(key, value);
      editor.putLong(key, value);
      editor.putString(key, value);
      editor.commit();

key est la clef (String) et value est la valeur.

Si vous ne finissez pas par commit, dès que votre activité n'est plus active, vos préférences seront oubliées par l'objet sharedPreference.

I-A-2. Utilisation du fichier XML des préférences

Il n'y a pas grand-chose à dire, l'activité ci-dessous affiche un éditeur pour que l'utilisateur puisse modifier ces préférences :

 
Sélectionnez
public class Preferences extends PreferenceActivity {
 
  @Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    addPreferencesFromResource(R.xml.userpreferences);      
  } 
}

I-A-3. Définition d'un fichier XML de préférences

Vous pouvez définir dans le fichier XML vos préférences de manière à ce qu' Android les interprète et puisse les modifier de manière programmatique ou bien construire une IHM permettant à l'utilisateur de les modifier.

Ce fichier possède une structure plus ou moins complexe.

·         Soit vous listez simplement vos préférences (dans ce cas, il n'y a pas de bloc PreferenceCategory et toutes vos préférences se trouvent dans le bloc PreferenceScreen).

·         Soit vous les listez en mettant une structure de category, elles seront regroupées en fonction des catégories que vous avez définies.

·         Soit vous faites appel à un autre écran de préférence, dans ce cas vous rajoutez un bloc PreferenceScreen qui ouvrira un autre écran de préférence quand l'utilisateur appuiera sur la préférence à modifier.

Les préférences qui ne sont pas des CheckBox ou des RingTone ouvriront des fenêtres de dialogue.

L'exemple ci-dessous est complet, vous pouvez l'associer à l'activité précédente pour que les préférences soient visibles par l'utilisateur :

 
Sélectionnez
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
  xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- Une Catégorie -->
  <!-- Une boîte de dialogue -->
  <PreferenceCategory android:title="Simple Preference">
    <CheckBoxPreference
      android:key="@string/checkbox"
      android:title="A checkBox preference :"
      android:summary="Check or uncheck"
    />
    <RingtonePreference
      android:key="@string/ringtone"
      android:title="Ring tone preference"
      android:showDefault="true"
      android:showSilent="true"
      android:summary="Choose a ringTone"
    />
  <!-- Une Catégorie -->
  </PreferenceCategory>
  <!-- Une Catégorie -->
  <PreferenceCategory android:title="more details (another category)">
  <!-- Un autre écran de préférence-->
    <PreferenceScreen
      android:key="detail"
      android:title="Details"
      android:summary="More details on another screen">
      <CheckBoxPreference
        android:key="@string/checkbox2"
        android:title="Another checkBox"
        android:summary="On or Off"
      />
    </PreferenceScreen>
  </PreferenceCategory>
  <!-- Une Catégorie -->
  <PreferenceCategory android:title="Others simples preferences(another category)">
    <EditTextPreference
      android:key="@string/text"
      android:title="Text editor dialog"
      android:summary="Click to open an editor field"
      android:dialogTitle="Any text is ok"
    />
    <ListPreference
      android:key="@string/list"
      android:title="Choice dialog"
      android:summary="Click to open a list of choices"
      android:entries="@array/i_like_array"
      android:dialogTitle="Choose what you like" />
  </PreferenceCategory>
</PreferenceScreen>

Vous pouvez utiliser ce fichier de préférences avec l'activité suivante :

 
Sélectionnez
public class PreferenceSimpleTuto extends PreferenceActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}

avec le fichier string.xml suivant :

 
Sélectionnez
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, PreferenceSimpleTuto!</string>
    <string name="app_name">PreferenceSimpleTuto</string>
    <string name="checkbox">Check Box</string>
    <string name="ringtone">Ring Tone</string>
    <string name="checkbox2">Check Box2</string>
    <string name="text">Text</string>
    <string name="list">List</string>
    <string-array name="i_like_array">
                               <item>chocolate</item>
                               <item>television</item>
                               <item>internet</item>
                               <item>nicotine</item>
                               <item>hug</item>
                               <item>Santa Claus</item>
                </string-array>
</resources>

II. Android2EE: La Formation et l'Expertise Android à votre service

Image non disponible

Android2EE


Android2EE espère que cet article vous a été utile et profitable.
En tant qu'experts et formateurs sur le développement Android, nous serions heureux de vous accueillir à nos formations pour pouvoir continuer à vous expliquer l'art du développement Android (nous avons des tonnes de choses à vous raconter). Nous sommes persuadés qu'elles sont excellentes, les stagiaires qui les ont suivies le sont aussi.
Alors si vous souhaitez devenir un excellent développeur Android, il ne vous reste plus que deux choses à faire:

  • nous envoyer un mail à
  • convaincre votre service R.H. de l'importance de cette formation pour vous et pour l'entreprise.



Pour plus de renseignements, n'hésitez pas à cliquer sur les liens ci-dessous.



Comme AirFrance , Orange, Capgemini , Atos WorldLine et bien d'autres.
Vous aussi,
Bénéficiez des meilleures formations Android du moment



Android2EE est référencé en tant qu'organisme de formation, vous pouvez faire prendre en charge tout ou partie du montant de cette formation par votre OPCA. Les formations Android d'Android2EE sont éligibles au titre du DIF et CIF.

III. Récupération des tutoriels et lecture des autres chapitres du livre

Vous pouvez lire l'ensemble de l'ouvrage sur Android2EE, à cet adresse Livre en consultation. Les 28 chapitres sont disponibles. Un tutorial sera bientôt disponible sur le site Android2EE.

IV. Le site Android2ee, une référence pour le développement Android.

Le site Android2EE vous propose des tutoriels, des articles, des vidéos, des conférences, des eBooks en libre consultation pour monter en compétence sur la technologie Android.

Vous trouverez tout cela dans la partie « Open Resources ».

N'hésitez plus visitez-le ! Android2EE

V. Remerciements

Nous remercions Malick SECK pour sa relecture orthographique.

N'hésitez pas à commenter cet article ! Commentez Donner une note à l'article (0)

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2014 Mathias Seguy. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.