2016-10-15 1 views
0

enter image description hereAndroid sharedpreferences.getBoolean() gibt den falschen Standardwert

Auf dem Bild sehen Sie, dass die boolsche Variable den Standardwert hat sehen können, auch wenn es ein Schlüssel-Wert-Paar in der SharedPreferences mit der rechten Seite war Schlüssel. Was kann das verursachen? Im Code ist dies am Ende einer onCreate Methode. Danach wird die onMapReady Methode aufgerufen (von com.google.android.gms.maps.OnMapReadyCallback), wo ich den Booleschen Wert SAME überprüfe, um zu sehen, ob ich einige Marker auf der Karte platzieren muss oder nicht. In dieser Methode ist das getBoolean() Verhalten korrekt, der Standardwert wird ignoriert. Das ergibt für mich keinen Sinn, kann mir jemand helfen?

+0

Bitte zeigen, wo Sie –

Antwort

6

1) Haben Sie beabsichtigen, den Platz im Schlüssel "isThereReservation"? In Ihrem Debug-Code hat die Variable kein Leerzeichen. Stellen Sie sicher, dass Sie den richtigen Schlüssel verwenden, sonst erhalten Sie den Standardwert!

2) Wie speichern Sie die sharedPref? Code sein sollte:

myPrefs = myContext.getSharedPreferences("MY_PREFERENCE_NAME", MODE_PRIVATE); 
myPrefEditor = myPrefs.edit(); 
myPrefsEditor.clear(); 
myPrefsEditor.putBoolean("MY_KEY",myBool); 

und dann können Sie zugreifen, indem Sie mit:

myPrefs = myContext.getSharedPreferences("MY_PREFERENCE_NAME", MODE_PRIVATE); 
myPrefs.getBoolean("MY_KEY",MY_DEFAULT_VALUE); 
+0

Ich fühle mich so dumm, danke ... Ich sah den Code für die Rechtschreibung wie 10 Mal und bemerkte nie den Platz. Ich sollte diese Frage dann löschen, oder? Weil es wahrscheinlich niemandem helfen wird. –

+0

Haha! Das passiert mit uns allen! Keine Sorge und Sie sind herzlich willkommen! : D Wenn Sie meinen, dass meine Antwort zufriedenstellend ist, markieren Sie sie als akzeptiert und geben Sie vielleicht eine Stimme auf: D – Rippr

0

Die Methode getBoolean gibt den Standardwert zurück, wenn der Schlüssel nicht existiert. In Ihrem Fall lautet der Standardwert false und wenn der Schlüssel der SharedPreference nicht vorhanden ist, ist in Ihrem Fall falsch.

Sie zeigen den Wert der HashMap in debuggen MMAP aber was ist der Inhalt des eu.arrowhed.arrowheaddemo für den gleichen Schlüssel?

+0

Prefs dass boolean in die gleichen gemeinsamen Präferenzen setzen ist eine globale Variable in der Tätigkeit, Sie kann die einzige Initialisierung auf dem Bild sehen. dass mMap hashmap zu der prefs-Variable gehört. –

Verwandte Themen