Android 无法从SharedReferences获取字符串值
我将一些字符串数据保存到SharedReferences,但不幸的是,我无法从SharedReferences获取字符串值 这是我将数据保存到SharedReferences的代码Android 无法从SharedReferences获取字符串值,android,sharedpreferences,Android,Sharedpreferences,我将一些字符串数据保存到SharedReferences,但不幸的是,我无法从SharedReferences获取字符串值 这是我将数据保存到SharedReferences的代码 SharedPreferences prefs = this.getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE); userPhone = etPhone.getText().toString(); prefs.edit().putString("
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);
我的日志将电话号码显示为字符串,而不是我保存到SharedReferences的用户输入值。用于将值存储到
SharedReferences
中,您正在使用编辑器和方法调用:
prefs.edit().putString(String key, String value)
你做对了:
prefs.edit().putString("userPhone", userPhone).apply();
对于检索数据,我们使用与存储相同的密钥。在您的情况下,它是“用户电话”。
因此,您应该使用:
prefs.getString("userPhone", "Some default value");
但是,您将密钥与首选项名称混合,然后调用
prefs.getString(Config.PREF_NAME, "userPhone");
在第二个活动中应该是这样的
SharedPreferences prefs = this.getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE);
String phoneNumber = prefs.getString("userPhone", "defaultValueIfNoPhoneAvailable");
Log.i("number", phoneNumber);
getString
的第二个参数是默认值,如果它没有键的映射。这里是区别。
实际上,您正在从以下位置检索值:
String phoneNumber = prefs.getString(Config.PREF_NAME, "userPhone");
但你需要做到:
SharedPreferences sharedPreferences = getContext().getSharedPreferences(Config.PREF_NAME, Context.MODE_PRIVATE);
String phoneNumber = sharedPreferences.getString("userPhone", null);
你应该解释一下他哪里出了错,而不是张贴代码,希望大家能理解。