我想保存一个具有列表的对象,问题是当我添加列表时,它向我显示错误
这是对象:
public class SaveRealm extends RealmObject {
private String id;
private RealmList<AnswersBean> answers;
public SaveRealm(){}
public SaveRealm(String id, RealmList<AnswersBean> answers) {
this.id = id;
this.answers = answers;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public RealmList<AnswersBean> getAnswers() {
return answers;
}
public void setAnswers(RealmList<AnswersBean> answers) {
this.answers = answers;
}
}
这是AnswersBean:
public class AnswersBean extends RealmObject {
private String text;
private boolean belongsToCurrentUser;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public boolean isBelongsToCurrentUser() {
return belongsToCurrentUser;
}
public void setBelongsToCurrentUser(boolean belongsToCurrentUser) {
this.belongsToCurrentUser = belongsToCurrentUser;
}
public AnswersBean(){}
public AnswersBean(String text, boolean belongsToCurrentUser) {
this.text = text;
this.belongsToCurrentUser = belongsToCurrentUser;
}
}
在保存领域的活动中,请执行以下操作:
final AnswersBean receptor = new AnswersBean("test", false);
RealmList<AnswersBean> answersList = new RealmList<>();
answersList.add(receptor);
SaveRealm saveRealm = myRealm.createObject(SaveRealm.class);
saveRealm.setId("s");
saveRealm.setAnswers(answersList);
myRealm.commitTransaction();
但出现以下错误
java.lang.NullPointerException:尝试调用接口方法 空对象引用上的'long io.realm.internal.Row.getIndex()'
我在 saveRealm.setAnswers(answersList)
行中收到此错误如何保存列表?
答案 0 :(得分:1)
尝试
try(Realm realm = Realm.getDefaultInstance()) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmList<News> _newsList = new RealmList<>();
_newsList.addAll(myCustomArrayList);
realm.insertOrUpdate(_newsList); // <-- insert unmanaged to Realm
}
});
}
答案 1 :(得分:0)
在您的SaveRealm
类中,answers
字段是一个列表。当您使用myRealm.createObject
创建对象(我只能假设是ChatRealm.class
的错字)时,会创建该成员。您不能将该成员重新分配到另一个列表,而应该修改现有列表。
例如,您的SaveRealm.setAnwers
方法可能看起来像这样:-
public void setAnswers(RealmList<AnswersBean> answers) {
this.answers.clear();
this.answers.addAll(answers);
}
答案 2 :(得分:0)
尝试
public T addObject(Class<T> m_type, T obj) {
T result = null;
try {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
result = realm.copyToRealmOrUpdate(obj);
realm.commitTransaction();
realm.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
这里T是通用对象,它将是您的领域类