web-dev-qa-db-fra.com

Android - Comment puis-je définir une préférence dans le code

J'ai une Android dans laquelle j'ai mes préférences dans un fichier XML, qui fonctionne très bien. Je veux maintenant définir l'une des préférences en utilisant du code au lieu d'afficher tout l'écran des préférences, comment Je vais faire ça?

41
stonedonkey

Je suppose que par préférences, vous faites référence aux préférences de votre application et non aux paramètres du téléphone Android.

Pour stocker les préférences entre les exécutions de votre application, vous devez procéder comme suit

  1. Créer un objet SharedPreferences

    SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
    

    La chaîne n identifie vos préférences et le deuxième argument est le mode auquel elles seront accessibles

  2. Instancier un objet Editor

    SharedPreferences.Editor editor = settings.edit();
    

    Remarque: n'essayez pas settings.editor.edit (), cela ne fera pas un objet persistant et le code ci-dessous ne fonctionnera pas

  3. Écrivez vos préférences dans le tampon

    editor.put...(String, value)
    

    Il existe de nombreuses fonctions put, putString, putBoolean, etc. La chaîne est la clé ("version", "bonne exécution") et la valeur est la valeur ("1.5.2", true )

  4. Vider le tampon

    editor.commit();
    

    Cela écrit en fait vous mettez dans les préférences. Si votre application se bloque avant cette ligne, les préférences ne seront pas écrites. Il existe également un bogue documenté: commit () est censé renvoyer un booléen indiquant la réussite ou l'échec. La dernière fois que j'ai vérifié, il retournait toujours faux.

Ces préférences seront enregistrées sur le téléphone et ne seront accessibles qu'à votre application.

Plus de documentation est ici

120
Will

J'ai essayé mais je n'ai pas fonctionné:

SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);

Essayez plutôt ceci:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
8
Adan

Vous pouvez enregistrer quelque chose dans les préférences partagées en utilisant le code ci-dessous

public static void save(String valueKey, String value) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
    SharedPreferences.Editor edit = prefs.edit();
    edit.putString(valueKey, value);
    edit.commit();
    }

Pour lire les préférences:

public static String read(String valueKey, String valueDefault) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
   return prefs.getString(valueKey, valueDefault);
}
2
AndroidSter