Guest hardrocky Posted March 15, 2013 Share Posted March 15, 2013 Bonjour à tous ! Voilà deux petits bouts de code : preferences.xml <ListPreference android:key="tailleSynth" android:dialogTitle="@string/taille" android:entries="@array/tailles" android:entryValues="@array/tailles_val" android:title="@string/taille" android:defaultValue="9" /> MainActivity.java dans onresume SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); t.setTextSize(TypedValue.COMPLEX_UNIT_PT, Float.parseFloat(sharedPref.getString(SettingsActivity.tailleReco, ""))); // taille synthese Lors que je vide le cache de mon app, au premier lancement de l'app, crash. Le logcat me dit NumerFormatException: Invalid float = "" Je pense avoir compris ce qu'il se passe : au premier démarrage, la valeur par défaut 9 n'est pas prise en compte, du coup aucune valeur n'est chargée dans getString(SettingsActivity.tailleReco, ""). Par contre, si dans mon activité "settings" je modifie la valeur, cela fonctionne normalement. Comment faire pour qu'au lancement de l'app, si l'utilisateur n'a pas modifié les paramètres manuellement, la valeur que j'ai spécifiée par défaut soit prise en compte ? Merci Edit : sujet à clore, je viens de trouver la réponse. Le deuxième argument de getString() est la valeur par défaut à prendre si rien n'est trouvé. Le defaultValue du fichier XML sert uniquement au rendu. Link to comment Share on other sites More sharing options...
chpil Posted March 18, 2013 Share Posted March 18, 2013 Le defaultValue du XML ne sert pas qu'à l'IHM, il peut aussi servir à initialiser les preferences, et faire ce que tu voulais faire initialement. Pour cela, il te faut faire un appel à PreferenceManager.setDefaultValues, dans le onCreate de ton Activity par exemple PreferenceManager.setDefaultValue(this, R.xml.preferences, true); Cela initialise les preferences avec les valeurs par défaut indiquées dans le xml (cela ne le fait que s'il n'existe pas déjà une valeur, donc pas de risque d'écraser les valeurs stockées dans les preferences lors des prochains appels). Et cela évite par la suite de dupliquer la valeur par défaut (dans le XML, et lors des appels à getString/getInt/...) Link to comment Share on other sites More sharing options...
Guest hardrocky Posted March 18, 2013 Share Posted March 18, 2013 Ah super, merci. Je ne voulais pas utiliser cette méthode car je pensais qu'elle initialisait les valeurs par défaut à chaque fois, même si l'utilisateur avait modifié les paramètres. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.