Android 无法在其他活动中检索保存的SharedReference
所以我们正在开发这个Android应用程序。我们有一个登录活动,当用户成功登录时,它会接收一些信息。我们有一个名为SessionManager的类,它负责将所述数据保存到SharedReference SessionManager始终从同一文件检索SharedReferences。里面是硬编码的Android 无法在其他活动中检索保存的SharedReference,android,Android,所以我们正在开发这个Android应用程序。我们有一个登录活动,当用户成功登录时,它会接收一些信息。我们有一个名为SessionManager的类,它负责将所述数据保存到SharedReference SessionManager始终从同一文件检索SharedReferences。里面是硬编码的 public SessionManager(Context context) { this.preferences = context.getSharedPreferences(PREF
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(),它也可以工作
我在另一个活动中手动设置了存储的配置文件,它可以很好地检索手动存储的配置文件
是否有一些作用域规则或我缺少的共享引用内容?结果证明我是个傻瓜,每次尝试获取它们时,我都不小心擦除了我的首选项。请同时发布getStoredValue()代码。@NishantPardamwar表示歉意。我已经发布了代码。我觉得这没问题,你能提供吗?另外,我将尝试使用应用程序上下文而不是活动1初始化
SessionManager
。但我现在在某个地方读到,共享首选项在单个应用程序的所有上下文中都是相同的文件,所以这不应该是您的问题。我也会避免做.edit()代码>具有较长的生命周期。在storeProfile
中,仅将编辑器作为局部变量获取。(再说一遍,这不应该构成问题,我只是觉得这是一种糟糕的风格)。