我试图将一些Json String解析为单例类" UserModel",所以我的所有片段都可以访问它。
填写我的" UserModel"时,我没有任何问题。 例如,我有一个属性类" Infos infos"在" UserModel"我做的时候会被填满
user = gson.fromJson(infos, UserModel.class);
那件事情很完美,我可以访问" user.infos。 myAttributes "。
问题是当我切换片段时," infos"我的UserModel中的类不再存在,当我想访问它时它为null。
奇怪的是,当我只是尝试在" UserModel"中添加一个字符串并对其进行修改时,字符串会在更改片段时保持更改。 所以我想当我做Json解析时会出现问题。
- 编辑 - 这是UserModel的一部分,单例类:
public class UserModel {
public static final UserModel userModel = new UserModel();
public String token;
public Infos infos;
public static UserModel getInstance() {
Log.d("UserModel", "GetInstance");
return userModel;
}
public static class Infos {
public String id;
public String login;
}
}
我在每个片段中都有这个,所以我可以随处访问:
private UserModel user;
以下是我实例化的方法:
user = UserModel.getInstance();
答案 0 :(得分:0)
以下是您的UserModel编写为正确的线程安全Singleton:
的示例public class UserModel {
public static UserModel _instance;
public String token;
public Infos infos;
public static UserModel getInstance() {
if (_instance == null) {
synchronized (UserModel.class) {
if (_instance == null) {
_instance = new UserModel();
_instance.infos = new Infos();
}
}
}
return _instance;
}
public static class Infos {
public String id;
public String login;
}
}
请注意,切换片段时可能会破坏单个类(例如,当您将片段替换为另一个片段时)。
最安全的解决方案是在全局Application类中实例化您的单例,从而确保它将在您的应用程序终止之前一直存在。