K1dr3k


Le blog d’un passionné de Linux et des produits OpenSource

Android – Gestion des préférences au sein d’une appli

Quelle application sur n’importe quelle plateforme n’utilise pas de paramètres, paramètres google pour accéder au Reader, paramètre Twitter pour accéder à son compte. Tout autant de raison de bien connaître comment les gérer au sein d’Android.

Nous allons partir d’un projet complet. Je ne vais pas vous apprendre comment le créer au sein d’eclipse, donc nous allons zapper cette étape.
Notre application va s’articuler sur 2 écrans, un principal celui de l’application, et un second affichant les différents paramètres à saisir. Pour cet exercice, nous allons utiliser comme paramètres le « username » et le « password ».

1 – Création du Manifest en fonction de notre application

Pour chaque application, il est nécessaire d’avoir un fichier AndroidManifest.xml qui va déterminer le comportement de l’appli.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".test_preference"
                  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="Prefs"></activity>
    </application>
    <uses-sdk android:minSdkVersion="8" />
</manifest>

Vous pouvez remarquer les champs activity,
le premier pour l’appel à l’écran principal utilisé par l’application.

<activity android:name=".test_preference"

puis, celui contenant l’appel à la classe Prefs, qui affichera l’écran de saisie des préférences. Cette ligne est très importante.

<activity android:name="Prefs"></activity>

2 – Création de l’affichage des préférences

Dans cette étape, nous allons créer le layout affichant les préférences souhaitées, il s’agit de créer un fichier au sein du répertoire « xml »:
Name : prefs.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
	xmlns:android="http://schemas.android.com/apk/res/android">
	<EditTextPreference
		android:summary="Please provide user name"
		android:title="User Name"
		android:key="username"></EditTextPreference>
	<EditTextPreference
		android:summary="Please enter your password"
		android:title="Password" android:password="true"
		android:key="password"></EditTextPreference>
</PreferenceScreen>

Une fois ce layout défini, nous allons définir le menu à afficher à partir de l’affichage principal et qui nous permettra de basculer sur celui des préférences. Pour ce faire, il suffit de créer un fichier au sein du répertoire « xml ».
Name : menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:id="@+id/itemPrefs" android:title="@string/titlePrefs"
    android:icon="@android:drawable/ic_menu_preferences"></item>
</menu>

3 – Création de la classe affichant les paramètres à renseigner

Voici la mise en place de la classe gérant l’écran des préférences. Il suffit de créer une nouvelle classe à travers l’interface d’éclipse dans le répertoire dédié aux sources.
Name : Prefs.java

package com.test;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Prefs extends PreferenceActivity{
  @Override
  public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.prefs);
  }
}

4 – Création de la classe principale

Nous allons déclarer ici la classe principale, l’appel au menu, et ainsi l’affichage de l’écran dédié aux paramètres. Pour cela, il faut à nouveau créer un fichier classe au sein du répertoire sources.
Name : test_preference.java

package com.test;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.TextView;
public class test_preference extends Activity {
	public String TAG="Kidrek - Log ";
    /** Called when the activity is first created. */
    //@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Get the app's shared preferences
        SharedPreferences app_preferences =
        	PreferenceManager.getDefaultSharedPreferences(this);
        // Get the value for the run counter
        int counter = app_preferences.getInt("counter", 0);
        String username = app_preferences.getString("username", "n/a");
        String password = app_preferences.getString("password", "n/a");
        // Update the TextView
        TextView text = (TextView) findViewById(R.id.text);
        text.setText("This app has been started " + counter + " times.");
        // Increment the counter
        SharedPreferences.Editor editor = app_preferences.edit();
        editor.putInt("counter", ++counter);
        editor.commit(); // Very important
    }
    //@Override
    public boolean onCreateOptionsMenu(Menu menu){
      MenuInflater inflater = getMenuInflater();
      inflater.inflate(R.xml.menu, menu);
      return true;
    }
    // Called when menu item is selected //
    //@Override
    public boolean onOptionsItemSelected(MenuItem item){
      switch(item.getItemId()){
      case R.id.itemPrefs:
        // Launch Prefs activity
        Intent i = new Intent(test_preference.this, Prefs.class);
        startActivity(i);
        Log.d(TAG, "MenuPrefs starting Prefs");
        break;
      }
      return true;
    }
}

Voici le déroulement des étapes une fois l’application terminée, à travers des screenshot.






Category: Android

Tagged:

2 Responses

  1. Rija dit :

    Merci pour ce tutoriel, ça nous aide beaucoup!
    Voilà un moyen pour stocker notre émulation de cookie pour la gestion session, qu’en pensez-vous?

  2. kidrek dit :

    Merci ! En effet, les informations liées à la gestion de session peuvent être stockées au sein de ces variables. Faites attention néanmoins, s’il s’agit d’application multi-utilisateur, et éviter que chacun se retrouve avec des informations d’autres personnes.

Leave a Reply

Page optimized by WP Minify WordPress Plugin