2016-05-04 4 views
-1

Ich habe String-Feld <string name="categegoriesStatus">true</string>Ändern Zeichenfolge Wert mit PutBoolean Rückgabe eines numerischen Werts in Android?

Jetzt innerhalb settingsActivity Ich ändern seinen Wert auf Präferenz klicken.

final SharedPreferences sharedpreferences = getActivity().getPreferences(Context.MODE_PRIVATE); 
         SharedPreferences.Editor editor = sharedpreferences.edit(); 
         editor.putBoolean(getResources().getString(R.string.categegoriesStatus), false); 
         editor.apply(); 

Aber es wird nicht auf false geändert, sondern auf einen numerischen Wert geändert. Und ich bekomme nicht mein gewünschtes Ergebnis.

+0

Wie lautet der numerische Wert, den Ihr Anruf zurückgibt? – ChampS

+0

@ChampS gibt es Wert = 2131238702 – Gini

Antwort

1

Sie haben eine Zeichenfolge, aber Sie möchten speichern Sie eine boolean. Dann sollten Sie das sein:

boolean result = getResources().getString(R.string.categegoriesStatus).equals("true"); 
    editor.putBoolean(result, false); 

Viel Glück!

+0

Ich habe 'Wrong ersten Argument Typ. Boolean erforderlich ' in der' Ergebnis 'Variable. Ich tat dies: editor.putBoolean (String.valueOf (Ergebnis), falsch); Aber es wird nicht funktionieren. – Gini

+0

Sie können cast result für Boolean-Objekt versuchen. Vielleicht '(Boolesches) Ergebnis? oder 'Boolesches Ergebnis = getResources(). getString (R.string.categegoriesStatus) .equals (" true ");' –

1

Sie verwenden Sharedpreferences falsch.

in der Anweisung editor.putBoolean (getResources(). GetString (R.string.categegoriesStatus), false); Sie fügen editor.putBoolean ein ("true", false); Das ist nicht das, was Sie erwarten.

In gemeinsamen Voreinstellungen gespeicherte Informationen sollten im Schlüsselwertformat vorliegen.

Lesen Sie die Android-Dokumentation über diesen Link: http://developer.android.com/reference/android/content/SharedPreferences.Editor.html

0

Gemeinsam genutzte Einstellungen speichert nur/Schlüsselwertepaare abrufen. Es ändert nicht die Werte der Zeichenfolgenressourcen. Sobald Sie ein Zeichenfolgenressourcenfeld deklariert haben, können Sie dessen Wert zur Laufzeit nicht ändern. Bitte beziehen Sie sich auf this answer.

Verwandte Themen