2017-08-15 102 views
0

我将一些String数据保存到SharedPreferences,但不幸的是我无法从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的用户输入的e值。

回答

1

对于存储的值到您正在使用编辑器和方法调用SharedPreferences:

prefs.edit()putString(String键,字符串值)

你这样做是正确的:

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

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

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

但是,你喜好的名字混合键,你叫

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

+1

您应该添加一个解释,他走到哪里错了,而不是发布代码,希望可以理解的。 – Doomsknight

+1

它为我工作非常感谢 –

0

它应该看起来像你的第二个活动。

SharedPreferences prefs = this.getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE); 
String phoneNumber = prefs.getString("userPhone", "defaultValueIfNoPhoneAvailable"); 
Log.i("number", phoneNumber); 

getString第二个参数是在情况下,它具有用于键的映射关系的默认值。

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