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
.
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éé.
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));
Votre appel à getString()
a null
comme second paramètre. Modifier que la valeur par défaut que vous voulez.