2010-04-02 4 views
0

Voici le problème auquel je suis confronté: Dans mon application, j'ai plusieurs préférences stockées dans sharedPreferences qui enregistrent différents paramètres de l'application. Ce sont des chaînes. Comme je souhaite que l'application commence par des valeurs par défaut pour ces paramètres, dans onCreate, je construis un objet "Setting" pour chaque paramètre dans lequel je vérifie si sharedPreference est null et si c'est le cas je mets la valeur par défaut dans la sharedPreference.Comportement étrange pour ListPreferences

Setting(int setting, String default) 
{ 
    storedPref=sharedPref.getString(getText(setting),null); 
    if(storedPref==null) 
    { 
     SharedPreferences.Editor edit=sharedPred.edit() 
     edit.putString(getText(setting),default); 
     edit.comit 
    } 
} 

Les vues associées à ces paramètres sont ListPreferences(). Lors de la première ouverture de l'application, ils sont censés afficher une liste d'options, dans laquelle l'option sélectionnée est la valeur par défaut, mais il arrive parfois qu'aucune option n'est sélectionnée, pas même celle par défaut, ce qui n'est pas prévu. Les listPreferences sont construites en XML, en définissant un tableau à la "balises d'entrées" et à la "balise de valeurs". Je ne suis pas vraiment sûr, que dois-je passer au constructeur de l'objet Setting pour la valeur par défaut, un membre du tableau entrées, ou un quelque chose à partir des valeurs un !!! Si je passe un membre des entrées, Listpreferences aura le comportement attendu et certaines auront le comportement décrit ci-dessus. Si je fais le contraire et que je passe quelque chose du tableau des valeurs, la même chose arrive! Quelqu'un at-il une idée de pourquoi ce comportement étrange?

Répondre

0

Depuis le deuxième paramètre de SharedPreferences.getString() est la valeur par défaut qui sera retourné si la clé n'est pas présent, vous pouvez tout aussi facilement écrire

Setting(int setting, String default) 
{ 
    storedPref=sharedPref.getString(getText(setting),default); 
} 
+0

Oui, mais que cela ne signifie pas que la valeur par défaut sera sauvé, ce qui est ce que je dois. –

1

Vous devriez vérifier le fichier de préférences, et reconnaître la clé et le format est utilisé par notre ListPreference, vous utilisez la même valeur paire de clés dans votre SharedPreferences.Editor

vous trouverez vos fichiers prefs dans le dossier suivant

/data/data/com.your.package/shared_prefs/ 

vous y arrivez en exécutant dans la console:

adb shell 
cd /data/data/com.your.package/shared_prefs/ 
ls 
+0

Que voulez-vous dire par clé et format? –

+0

si vous voulez dire la clé de réglage et le format comme en valeur (K, V), que j'utilise les mêmes paramètres lorsque je sauvegarde la valeur par défaut –