Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android领域保存对象列表?_Java_Android_Realm - Fatal编程技术网

Java 如何在Android领域保存对象列表?

Java 如何在Android领域保存对象列表?,java,android,realm,Java,Android,Realm,我想保存一个有列表的对象,问题是当我添加列表时,它会显示一个错误 这就是目标: public class SaveRealm extends RealmObject { private String id; private RealmList<AnswersBean> answers; public SaveRealm(){} public SaveRealm(String id, RealmList<AnswersBean> answ

我想保存一个有列表的对象,问题是当我添加列表时,它会显示一个错误

这就是目标:

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;
    }
}
在保存域的活动中,我执行以下操作:

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();
final AnswersBean receptor=新的AnswersBean(“测试”,错误);
RealmList answersList=新的RealmList();
回答列表。添加(受体);
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)


如何保存列表?

SaveRealm
类中,
answers
字段是一个列表。当您使用
myRealm.createObject
创建对象时(我只能假设是键入了
ChatRealm.class
),该成员被创建。您不能将该成员重新分配给其他列表,而是要修改现有列表

例如,您的
SaveRealm.setAnwers
方法可以如下所示:-

public void setAnswers(RealmList<AnswersBean> answers) {
    this.answers.clear();
    this.answers.addAll(answers);
}
public void setAnswers(RealmList answers){
这个.answers.clear();
this.answers.addAll(answers);
}
试试这个

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;
}
public T addObject(类m_类型,T obj){
T结果=null;
试一试{
Realm Realm=Realm.getDefaultInstance();
realm.beginTransaction();
结果=realm.copyToRealmOrUpdate(obj);
realm.commitTransaction();
realm.close();
}捕获(例外e){
e、 printStackTrace();
}
返回结果;
}

这里T是通用对象,它将是您的领域类

请发布完整的堆栈跟踪。
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;
}