Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法从SharedReferences获取字符串值_Android_Sharedpreferences - Fatal编程技术网

Android 无法从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("

我将一些字符串数据保存到SharedReferences,但不幸的是,我无法从SharedReferences获取字符串值

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

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

你应该解释一下他哪里出了错,而不是张贴代码,希望大家能理解。