无法在另一个活动

时间:2016-11-23 22:27:28

标签: android

所以我们正在开发这款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的东西?

1 个答案:

答案 0 :(得分:0)

原来我是个傻瓜,每当我试图弄它时,我都不小心擦掉了我的喜好。