【问题标题】:SharedPreferences does not work - getString always returns the default valueSharedPreferences 不起作用 - getString 始终返回默认值
【发布时间】:2013-10-21 12:57:44
【问题描述】:

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

我正在设置字符串,并想在 onCreate 方法中直接读出它。但我总是得到指定的默认值“7”。

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

感谢您的帮助:)

【问题讨论】:

  • 你两次调用 edit .. 尝试 s.edit().putString("eur", "1.80").commit();并删除下面多余的 s.edit()。

标签: android sharedpreferences


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    请在下面尝试我的代码。我认为您的代码有什么问题,您在这里使用了不同的“编辑器”实例:

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

    这里

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

    【讨论】:

      【解决方案3】:
      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();
      

      试试这个

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-29
        相关资源
        最近更新 更多