我将一些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的用户输入值。
答案 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);
的第二个参数是默认值,以防它没有键的映射。