2013-10-21 6 views
5

Ich habe ein Problem mit SharedPreferences in Android.SharedPreferences funktioniert nicht - getString gibt immer den Standardwert

Dies ist mein Code:

SharedPreferences s = this.getSharedPreferences("kurs",MODE_WORLD_READABLE); 
    s.edit().putString("eur", "1.80"); 
    s.edit().commit(); 
    SharedPreferences a = this.getSharedPreferences("kurs",MODE_WORLD_READABLE); 
    String kurs = a.getString("eur","7"); 

    Toast hhh= Toast.makeText(getApplicationContext(),kurs, Toast.LENGTH_LONG); 
    hhh.show(); 

Ich bin die String Einstellung und wollen es direkt im onCreate Verfahren danach auszulesen. Aber ich bekomme immer den angegebenen Standardwert "7".

Was war los? Ich habe bereits nach diesem Problem recherchiert, aber ich kann keine hilfreichen Dinge finden.

Vielen Dank für Ihre Hilfe :)

+3

Sie rufen bearbeiten zweimal .. versuchen s.edit() putString ("EUR", "1,80") commit()..; und entfernen Sie die zusätzliche s.edit() unten. – cYrixmorten

Antwort

9

Jedes Mal, wenn Sie "s.edit()" ein neuer Editor aufrufen wird erstellt. Daher befindet sich Ihr Aufruf "commit()" in einer Instanz des Editors, auf den Ihre Einstellung nicht angewendet wurde. Versuchen Sie folgendes:

SharedPreferences s = this.getSharedPreferences("kurs",MODE_WORLD_READABLE); 
Editor editor = s.edit(); 
editor.putString("eur", "1.80"); 
editor.commit(); 
+0

Das funktioniert! Vielen Dank! :-) – Maximii77

1
SharedPreferences myPrefs = this.getSharedPreferences("kurs", MODE_WORLD_READABLE); 
SharedPreferences.Editor editor = myPrefs.edit(); 
editor.putString("eur", "1.80"); 
// commit the edits 
editor.commit(); 


SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", context.MODE_WORLD_READABLE); 
String kurs = myPrefs.getString("eur", "7"); 

Toast hhh= Toast.makeText(getApplicationContext(),kurs, Toast.LENGTH_LONG); 
hhh.show(); 

Try This

2

Bitte versuchen Sie es unter meinen Code. Was ich denke, ist falsch in Ihrem Code, dass Sie verschiedene "Editor" Instanzen hier verwenden:

"s.edit(). PutString (" eur "," 1.80 ");"

und hier

s.edit commit()().

private static String APP_SHARED_PREFS = "MyAppID"; 
// Write the value 
SharedPreferences.Editor prefsEditor = getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE).edit(); 
prefsEditor.putString("KEY", "VALUE"); 
prefsEditor.commit(); 
// Get the value 
return getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE).getString("KEY", ""); 
Verwandte Themen