Initialiser les préférences à partir de XML dans L'activité principale [dupliquer]

Cette question a déjà une réponse ici:

Mon problème est que lorsque je démarre l'application et que l'utilisateur n'ouvre pas mon PreferenceActivity, lorsque je les récupère, aucune valeur par défaut n'est définie dans ma préférence.XML fichier.

Préférence.fichier xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
    android:key="applicationPreference" android:title="@string/config"
    >
    <ListPreference
            android:key="pref1"
            android:defaultValue="default"
            android:title="Title"
            android:summary="Summary"
            android:entries="@array/entry_names"
            android:entryValues="@array/entry_values"
            android:dialogTitle="@string/dialog_title"
    />                  
</PreferenceScreen>

Extrait de mon Activité principale (onCreate méthode):

    SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);        
    String pref1 = appPreferences.getString("pref1", null);

Dans le résultat, je me retrouve avec une valeur null.

50
demandé sur gobernador 2010-05-20 17:45:26

3 réponses

Dans onCreate() de Activity appelez simplement le PreferenceManager.setDefaultValues() méthode.

PreferenceManager.setDefaultValues(this, R.xml.preference, false);

Cela va lire votre fichier preference.xml et définir les valeurs par défaut qui y sont définies. Définir l'argument readAgain sur false signifie que cela ne définira les valeurs par défaut que si cette méthode n'a jamais été appelée dans le passé, vous n'avez donc pas besoin de vous soucier de surcharger les paramètres de l'utilisateur chaque fois que votre Activity est créé.

107
répondu Dave Webb 2010-05-20 15:39:22

Je serai bref. :)

Des cordes.xml (en fait, j'ai préf.xml exclusivement pour les préférences):

<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>

Les Préférences.xml :

android:key="@string/pref_mypref_key"
android:defaultValue="@string/pref_mypref_default"

Mon activité.java :

String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));
14
répondu yanchenko 2010-05-20 15:10:37

Votre appel à getString() a null comme second paramètre. Modifier que la valeur par défaut que vous voulez.

8
répondu CommonsWare 2010-05-20 14:09:36