commit()后sharedPreference未更新

时间:2016-10-08 09:59:12

标签: java android sharedpreferences

我知道这个问题在答案中已有很多答案,但我找不到问题的答案。

这是我的代码:

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);

//Creating editor to store values to shared preferences
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();

//Adding values to editor
editor.putBoolean(Config.LOGGEDIN_SHARED_PREF, true);
editor.putString(Config.PHONE_SHARED_PREF, phoneNo);
Log.d("debug", "config "+Config.PHONE_SHARED_PREF);
Log.d("debug", "config "+phoneNo);

//Saving values to editor
editor.apply();
editor.commit();

据我所知,editor.putString(Config.PHONE_SHARED_PREF, phoneNo)表示将phoneNo的值保存到PHONE_SHARED_PREF。如果我错了,请纠正我。

但是在日志中,Config.PHONE_SHARED_PREF打印了默认值,而不是phoneNo中分配的新值。这意味着phoneNo的值未正确保存,不是吗?

有人可以向我解释我的代码有什么问题吗? :/

2 个答案:

答案 0 :(得分:2)

SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);

//Creating editor to store values to shared preferences
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();

//Adding values to editor
editor.putBoolean(Config.LOGGEDIN_SHARED_PREF, true)
      .putString(Config.PHONE_SHARED_PREF, phoneNo)
      .commit(); // returns true if successfully saved. 

Log.d("debug", "config " + sharedPreferences.getString(Config.PHONE_SHARED_PREF, "");

尝试以上方法。

答案 1 :(得分:1)

试试这个。

SharedPreferences sharedPreferences = getActivity().getSharedPreferences(Config.SHARED_PREF_NAME, Activity.MODE_PRIVATE);

sharedPreferences.edit().putBoolean(Config.LOGGEDIN_SHARED_PREF, true).commit();
sharedPreferences.edit().putString(Config.PHONE_SHARED_PREF, phoneNo).commit();