2012-10-03 3 views
0

-je conserver mon booléenne comme ça dans mon activité de préférence:obtenir booléen de préférence partagée renvoie toujours false

OnPreferenceChangeListener locaListener = new OnPreferenceChangeListener() {  
      public boolean onPreferenceChange(Preference preference, Object newValue) { 
       SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); 
       if(newValue.toString().trim().equals("true")){ 
        editor.putBoolean("locationEnabled", true); 
       }else if (newValue.toString().trim().equals("false")){ 
        editor.putBoolean("locationEnabled", false); 
       } 
       editor.commit(); 
       return true; 
      } 
     }; 

et essayer de le récupérer comme ça dans mon activité principale:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
boolean prefLocationEnabled = prefs.getBoolean("locationEnabled", false); 

approche même avec string fonctionne parfaitement mais avec boolean il semble retourner toujours la valeur par défaut qui est false. Quelqu'un sait ce que je fais mal?

+0

Etes-vous sûr 'editor.putBoolean ("locationEnabled", true);' est appelé? Est-ce que 'newValue.toString(). Trim(). Equals (" true ")' évalue à vrai? – CaseyB

+0

oui im ​​sûr dans les deux cas, je l'ai testé avec System.out. Il stocke la valeur mais ne peut pas le récupérer –

Répondre

1

Une fois que vous appelez getPreferences (MODE_PRIVATE) lorsque vous enregistrez et lorsque vous chargez, vous appelez PreferenceManager.getDefaultSharedPreferences (this);

Je pense que ce n'est pas la même préférence. N'utilisez qu'un de ces codes

0

Essayez ce code. Si vous donnez le paramètre true ou false, la valeur que vous donnez sera retournée.

Boolean tmp = null; 
tmp = sharedPreferences.getBoolean("key", tmp.getBoolean("")); 

Il vous donne la valeur que vous obtenez.

Questions connexes