无法从SharedPreferences获取String值

时间:2017-08-15 09:34:28

标签: android sharedpreferences

我将一些String数据保存到SharedPreferences但不幸的是我无法从sharedPreferences获取字符串值。

这是我将数据保存到SharedPreferences的代码

SharedPreferences prefs = this.getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE);
userPhone = etPhone.getText().toString();
prefs.edit().putString("userPhone", userPhone).apply();

这完全保存了我的号码但是当我尝试在下一个活动中检索它时,我得到了这个字符串" userPhone"

这就是我检索字符串值的方法

String phoneNumber = prefs.getString(Config.PREF_NAME, "userPhone");
Log.i("number", phoneNumber);

我的日志将 phoneNumber 显示为字符串,而不是我保存到sharedPrefrences的用户输入值。

3 个答案:

答案 0 :(得分:1)

要将值存储到SharedPreferences中,您正在使用编辑器和方法调用:

  

prefs.edit()。putString(String key,String value)

你做得对:

  

prefs.edit()。putString(“userPhone”,userPhone).apply();

为了检索数据,我们使用与用于存储的密钥相同的密钥。在您的情况下,它是“userPhone”。 所以,你应该这样做:

  

prefs.getString(“userPhone”,“Some default value”);

但是,您将键与首选项名称混合,并且您调用了

  

prefs.getString(Config.PREF_NAME,“userPhone”);

答案 1 :(得分:1)

这是区别。 您实际上正在从以下位置检索值:

String phoneNumber = prefs.getString(Config.PREF_NAME, "userPhone");

但你需要这样做:

SharedPreferences sharedPreferences = getContext().getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE);
String phoneNumber = sharedPreferences.getString("userPhone", null);

答案 2 :(得分:0)

在你的第二个活动中它应该是这样的。

    a=[]
    L=[a.append(x) for x in range(5)]
    print(L)
    # [None, None, None, None, None]
    # print(a) will show what you want. 

SharedPreferences prefs = this.getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE); String phoneNumber = prefs.getString("userPhone", "defaultValueIfNoPhoneAvailable"); Log.i("number", phoneNumber); 的第二个参数是默认值,以防它没有键的映射。