Aller au contenu

Preferences ne s'enregistrent pas


Recommended Posts

Bonjours à tous (et à toutes),

J'ai un petit problème avec les SharedPreference avec mon application. J'ai déclaré qqchose comme ça :

import android.content.SharedPreferences;

public final class Global {
   public static SharedPreferences userPref;
}

Que j'instancie comme cela dans mon onCreate :

        Global.userPref = this.getPreferences(MODE_PRIVATE);

       if (!Global.userPref.getBoolean("exists", false)) {
           showPreference();
       }

Au retour de la fenetre des préférences, je fais ceci :

                if(data.getExtras() != null && data.getExtras().getString("doorId") != null && isNumeric(data.getExtras().getString("doorId"))) {
                   Global.userPref.edit().clear();
                   Global.userPref.edit().putInt("doorId", Integer.parseInt(data.getExtras().getString("doorId")));
                   Global.userPref.edit().putBoolean("exists", true);
                   Global.userPref.edit().commit();
                   preferencesOk();
               } else {
                   showPreference();
                   Global.userPref.edit().clear();
                   Global.userPref.edit().putBoolean("exists", false);
                   Global.userPref.edit().commit();
               }

Le programme passe bien par le putInt et la valeur est bien différente de -1, mais plus tard quand je fais :

Global.userPref.getInt("doorId", -1)

J'obtiens encore et toujours -1, comme si il n'avait pas fixé la valeur. De plus, à chaque lancement de l'application, il me redemande les préférences car elles ne sont pas enregsitrées. Comme si mon commit ne faisait rien.

Une idée pour m'aider ?

Merci d'avance !!!!

Lien vers le commentaire
Partager sur d’autres sites

juste à froid j ai une piste:

quand tu fais : Global.userPref.edit().clear();

le edit() te renvoie un objet.... tu applique le clear à cet objet.

la ligne suivante:

Global.userPref.edit().putBoolean

c'est mignon mais si l'implémentation de edit() n'utilise pas un singleton tu vas recréer un objet edit à chaque ligne...

donc le gros commit à la fin va se faire sur un objet tout beau tout neuf.... qui ne fera donc : RIEN.

fais plutot :

XXXX edit = xxx.edit();

edit.putBoolean(....)

edit.commit();

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...