SharedPreferences不起作用 - getString始终返回默认值

时间:2013-10-21 12:57:44

标签: android sharedpreferences

我在Android中遇到了SharedPreferences问题。

这是我的代码:

    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();

我正在设置String并希望在onCreate方法之后直接读出它。但我总是得到指定的默认值“7”。

出了什么问题?我已经研究过这个问题,但我找不到有用的东西。

感谢您的帮助:)

3 个答案:

答案 0 :(得分:10)

每次调用“s.edit()”时,都会创建一个新的编辑器。因此,您的“commit()”调用位于未应用您的设置的编辑器实例上。试试这个:

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

答案 1 :(得分:3)

请尝试下面的代码。我认为你的代码中有错误,你在这里使用不同的“编辑器”实例:

  

“s.edit()。putString(”eur“,”1.80“);”

在这里

  

s.edit()提交();

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", "");

答案 2 :(得分:2)

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();

试试这个