PoZZyX Posté(e) 28 mai 2010 Share Posté(e) 28 mai 2010 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 More sharing options...
popolbx Posté(e) 28 mai 2010 Share Posté(e) 28 mai 2010 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 More sharing options...
PoZZyX Posté(e) 28 mai 2010 Auteur Share Posté(e) 28 mai 2010 En effet cela semble provenir de là :D Merci beaucoup pour ton aide !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.