préférences inaccessibles dans mon activité
bonjour,
j'ai besoin de SharedPreferences pour stocker l'adresse IP d'un serveur. J'ai beaucoup lu ce qui tourne autour et dupliqué pas mal de code mais je n'arrive pas à stocker cette adresse IP.
J'ai donc un layout via un PreferenceScreen stocké dans le fichier res/xml/preferences.xml:
Code:
1 2 3 4 5 6 7 8 9 10
|
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:layout_width="match_parent"
android:layout_height="match_parent"
android:key="ip"
android:defaultValue="127.0.0.1" >
</EditTextPreference>
</PreferenceScreen> |
Je suppose qu'en l'état la paire clé/valeur est assurée par les attributs key/defaultValue.
Une classe PreferencesActivity:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public class PreferencesActivity extends PreferenceActivity {
private String KEY_PREF_IP = "ip";
private String PREFS_NAME = "preferences";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
String pref_ip = settings.getString(KEY_PREF_IP, "hello");
System.out.println("pref_ip = " + pref_ip);
SharedPreferences.Editor editor = settings.edit();
editor.putString("0.0.0.0", KEY_PREF_IP);
editor.commit();
pref_ip = settings.getString(KEY_PREF_IP, "hello");
Toast toast = Toast.makeText(this, pref_ip, Toast.LENGTH_SHORT);
toast.show();
}
} |
Dans ma MainActivity j'ai inséré la ligne:
Code:
1 2
|
PreferenceManager.setDefaultValues(this, R.xml.preferences, false); |
Je pensais voir dans un premier temps la valeur par défaut 127.0.0.1 puis 0.0.0.0 dans le toast mais j'ai systématiquement "hello"...
Le commit se passe bien puisqu'il me retourne true.
Comment savoir si c'est bien le fichier preferences.xml qui est accédé?
Sinon, quoi t'est-ce qui dysfonctionne?
Merci.