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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.