Mon problème est que lorsque je démarre l'application et que l'utilisateur n'a pas ouvert mon PreferenceActivity
, donc lorsque je les récupère, aucune valeur par défaut n'est définie dans mon fichier preference.xml.
fichier de préférence.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 (méthode onCreate
):
SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
String pref1 = appPreferences.getString("pref1", null);
En conséquence, je me retrouve avec une valeur null
.
Dans onCreate()
de votre Activity
principal, appelez simplement la méthode PreferenceManager.setDefaultValues()
.
PreferenceManager.setDefaultValues(this, R.xml.preference, false);
Cela lira votre preference.xml
fichier et définissez les valeurs par défaut qui y sont définies. La définition de 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 à vous soucier de remplacer les paramètres de l'utilisateur chaque fois que votre Activity
est créé.
Je serai bref. :)
strings.xml (en fait j'ai prefs.xml exclusivement pour les préférences):
<string name="pref_mypref_key">mypref</string>
<string name="pref_mypref_default">blah</string>
preferences.xml:
Android:key="@string/pref_mypref_key"
Android:defaultValue="@string/pref_mypref_default"
MyActivity.Java:
String myprefVal = prefs.getString(getString(R.string.pref_mypref_key), getString(R.string.pref_mypref_default));
Votre appel à getString()
a null
comme deuxième paramètre. Modifiez cela pour être la valeur par défaut que vous souhaitez.