我使用共享首选项将字符串值存储在一个活动中,但是当尝试在某个其他活动中检索字符串时,它返回null。
这是我的代码:
活动A:
SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
SharedPreferences.Editor = preferences.edit();
editor.putString("FirstUserName", strUserName);
editor.commit();
上面的代码显示我正在共享首选项中保存字符串值。
现在,
活动B:
SharedPreferences preferences = getSharedPreferences("MyPrefs", Context.MODE_PRIVATE);
String strUserName = preferences.getString("FirstUserName", null);
上面的代码preferences.getString("FirstUserName", null)
返回null。
我不知道问题是什么,我想我已经正确编写了代码。
如果代码中有任何错误,请退回。
提前致谢。
答案 0 :(得分:2)
在你的第二个活动中你写了“MyPrefs”,并在第一个 你写的活动“MyPref”没有“s”。
更改 SecondActivity.java
SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
答案 1 :(得分:1)
在活动A中,您获得"MyPref"
,但在活动B "MyPrefs"
中获得额外的's'。这得到了另一个共享偏好的实例,这就是为什么你得到空值。我建议你在Constants类中声明这些字符串。
答案 2 :(得分:0)
试试这个......
- >对于商店价值:
SharedPreferences sharedPreferences = getSharedPreferences( “MyPref”,0);
SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString( “firstUserName”, “USER_NAME”);
editor.commit(); editor.apply();
- >对于Retrive Value:
SharedPreferences sharedPreferences = getSharedPreferences( “MyPref”,0);
Log.e(“FirstName”,sharedPreferences.getString(“firstUserName”,“”);