默认 SharedPreferences 不保存值

Posted

技术标签:

【中文标题】默认 SharedPreferences 不保存值【英文标题】:Default SharedPreferences don't save values 【发布时间】:2013-11-22 14:10:19 【问题描述】:

我有这门课:

public class SharedPreferenceUtil 

private SharedPreferences prefs;

private static final String PRODUCTION_MODE_URL_GET_CHECKLIST_JSON = "www.exemplo.com/json";

//configuration keys
private static final String KEY_URL_GET_CHECKLIST_JSON = "KEY_URL_GET_CHECKLIST_JSON";

public SharedPreferenceUtil(Context context)
    prefs = PreferenceManager.getDefaultSharedPreferences(context);


private void initializeDefaultAppConfigurationValues()
    prefs.edit().putString(KEY_URL_GET_CHECKLIST_JSON, PRODUCTION_MODE_URL_GET_CHECKLIST_JSON);
    prefs.edit().commit();


public Configuration getConfiguration() 
    Configuration configuration = new Configuration();

    initializeDefaultAppConfigurationValues();

    configuration.setChecklistGetURL(prefs.getString(KEY_URL_GET_CHECKLIST_JSON,""));

    return configuration;



当我保存row中的值时:prefs.edit()commit()..它返回true。当我尝试读取以下值时:prefs.getString (KEY_URL_GET_CHECKLIST_JSON, "")。它返回 "" 就好像该值没有被保存一样。

谁能帮我解决这个问题。

【问题讨论】:

【参考方案1】:

您的代码似乎有些不清楚

请参考以下代码:

设置:

  SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
  SharedPreferences.Editor editor = settings.edit(); 
                            editor.putString("language", language);
                            editor.commit();

阅读:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
String language = settings.getString("language", "");

【讨论】:

我不明白区别在于:prefs.edit () putString (KEY, VALUE).; prefs.edit () commit ().; 对此:Editor editor = prefs.edit (); editor.putString (KEY, VALUE); editor.commit (); 第一种方式不起作用,而第二种方式起作用。该死的变量赋值编辑器。 类似于文件指针。您在第一种方法中做错了什么:您正在创建一个分配值的编辑器对象而不是提交相同的值,而是您正在获取新对象并提交。但是,如果您在第二种方法中正确观察,则会提交设置了 have 的相同对象。【参考方案2】:

请看下面对你有用的链接

Sharedpreference store andr retrival

【讨论】:

【参考方案3】:
private SharedPreferences prefs;

你忘了static

 private static SharedPreferences prefs;   

所有示例都应该为 ONE

【讨论】:

以上是关于默认 SharedPreferences 不保存值的主要内容,如果未能解决你的问题,请参考以下文章

SharedPreferences 不保存布尔属性

无法保存 SharedPreferences 值,而是我得到: D/InputMethodManager: showSoftInput fail

SharedPreferences 不保值

SharedPreferences 未保存在 onPause 方法中

如何使用 SharedPreferences 从 Flutter 中的列表中保存多个布尔值

Android:使用SharedPreferences保存和恢复';用户首选项';值