Android Implémentation d'un écran Paramètres en utilisant SharedPreferences


Exemple

Une utilisation de SharedPreferences consiste à implémenter un écran "Settings" dans votre application, où l'utilisateur peut définir ses préférences / options. Comme ça:

Capture d'écran

Un SharedPreferences préférence enregistre les préférences de l'utilisateur dans les préférences SharedPreferences . Pour créer un écran de préférence, vous avez besoin de quelques éléments:

Un fichier XML pour définir les options disponibles:

Cela va dans /res/xml/preferences.xml , et pour l'écran de paramètres ci-dessus, cela ressemble à ceci:

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory
        android:title="General options">
        <CheckBoxPreference
            android:key = "silent_mode"
            android:defaultValue="false"
            android:title="Silent Mode"
            android:summary="Mute all sounds from this app" />

        <SwitchPreference
            android:key="awesome_mode"
            android:defaultValue="false"
            android:switchTextOn="Yes"
            android:switchTextOff="No"
            android:title="Awesome mode™"
            android:summary="Enable the Awesome Mode™ feature"/>

        <EditTextPreference
            android:key="custom_storage"
            android:defaultValue="/sdcard/data/"
            android:title="Custom storage location"
            android:summary="Enter the directory path where you want data to be saved. If it does not exist, it will be created."
            android:dialogTitle="Enter directory path (eg. /sdcard/data/ )"/>
    </PreferenceCategory>
</PreferenceScreen>

Ceci définit les options disponibles dans l'écran des paramètres. Il existe de nombreux autres types de Preference répertoriés dans la documentation des développeurs Android sur la classe de préférence .

Ensuite, nous avons besoin d' une activité pour héberger notre interface utilisateur de préférences . Dans ce cas, c'est assez court et ressemble à ceci:

package com.example.preferences;

import android.preference.PreferenceActivity;
import android.os.Bundle;

public class PreferencesActivity extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }
}

Il étend PreferenceActivity et fournit l'interface utilisateur pour l'écran des préférences. Il peut être lancé comme une activité normale, dans ce cas, avec quelque chose comme:

Intent i = new Intent(this, PreferencesActivity.class);
startActivity(i);

N'oubliez pas d'ajouter PreferencesActivity à votre AndroidManifest.xml .

Obtenir les valeurs des préférences dans votre application est assez simple, appelez simplement setDefaultValues() pour définir les valeurs par défaut définies dans votre XML, puis obtenez les SharedPreferences par défaut. Un exemple:

//set the default values we defined in the XML
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
    
//get the values of the settings options
boolean silentMode = preferences.getBoolean("silent_mode", false);
boolean awesomeMode = preferences.getBoolean("awesome_mode", false);
    
String customStorage = preferences.getString("custom_storage", "");