所以我们正在开发这款Android应用。我们有一个登录活动,当用户成功登录时会收到一些信息。我们有一个名为SessionManager的类,它处理将所述数据保存到SharedPreferences。
SessionManager始终始终从同一文件中检索SharedPreferences。它在那里硬编码。
public SessionManager(Context context) {
this.preferences = context.getSharedPreferences(PREFERENCE_NAME, 0);
this.editor = this.preferences.edit();
this.jsonParser = new Gson();
}
jsonParser就在那里,所以我们可以将信息保存为json对象。
public final void storeProfile(UserProfile profile) {
this.editor.putString(STORAGE_KEY, this.jsonParser.toJson(profile));
this.editor.commit();
}
private static final String STORAGE_KEY = "PROFILE";
private String getStoredValue() {
return this.preferences.getString(STORAGE_KEY, null);
}
public UserProfile getStoredProfile() {
String val = getStoredValue();
return (val == null) ? null : this.jsonParser.fromJson(val, UserProfile.class);
}
理论上,这应该意味着我们应该能够将个人资料存储在一个活动中,然后将其恢复到另一个活动中,对吗?
除非没有发生!看起来我只能在保存信息的同一个活动中检索保存的信息!
我在登录活动中调用storeProfile(),然后在另一个活动中调用getStoredProfile(),它返回null。
我在登录活动中调用storeProfile(),然后在登录活动中调用getStoredProfile(),并返回存储的配置文件。如果两个不同的SessionManager实例调用storeProfile()和getStoredProfile(),它也可以工作。
我在另一个活动中手动设置存储的配置文件,它可以很好地检索手动存储的配置文件。
我缺少哪些范围规则或者SharedPreferences的东西?
答案 0 :(得分:0)
原来我是个傻瓜,每当我试图弄它时,我都不小心擦掉了我的喜好。