默认SharedPreferences不保存值

1 android default save sharedpreferences

我有这门课:

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;
}

}
Run Code Online (Sandbox Code Playgroud)

当我在行中保存值时:prefs.edit()commit()..它返回true.当我尝试读取以下值时:prefs.getString(KEY_URL_GET_CHECKLIST_JSON,"").它返回"",好像该值尚未保存.

有人可以帮我解决这个问题.

San*_*eep 8

您的代码似乎有点不清楚

请参考以下代码:

组:

  SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
  SharedPreferences.Editor editor = settings.edit(); 
                            editor.putString("language", language);
                            editor.commit();
Run Code Online (Sandbox Code Playgroud)

读:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
String language = settings.getString("language", "");
Run Code Online (Sandbox Code Playgroud)

  • 它类似于文件指针.你在第一种方法中做了什么错误:你正在创建一个编辑器对象来分配值而不是提交相同而不是你正在接受新对象并提交它.但是如果你在第二种方法中正确观察,那么同样的对象正在被提交,这已经设置了. (2认同)