Java 从领域中检索RealmObject后,将其设置为另一个RealmObject

Java 从领域中检索RealmObject后,将其设置为另一个RealmObject,java,android,realm,updating,Java,Android,Realm,Updating,我在Realm上遇到了一个问题,每当我尝试在存储RealmObject之后将其设置为另一个时,它就会因NullPointerException而崩溃 例如 这对于简单的数据结构很好。但我使用的领域对象包含两到三个其他RealMobject,像这样操作它们似乎是很多不必要的工作 我只是想知道我是否错过了什么。或者如果有更简单的方法。任何帮助都将不胜感激 谢谢Pet=new Pet()将创建一个独立的对象,该对象尚未由Realm管理。这就是personFromRealm.setPet(pet)崩溃的

我在Realm上遇到了一个问题,每当我尝试在存储RealmObject之后将其设置为另一个时,它就会因NullPointerException而崩溃

例如

这对于简单的数据结构很好。但我使用的领域对象包含两到三个其他RealMobject,像这样操作它们似乎是很多不必要的工作

我只是想知道我是否错过了什么。或者如果有更简单的方法。任何帮助都将不胜感激

谢谢

Pet=new Pet()
将创建一个独立的对象,该对象尚未由Realm管理。这就是personFromRealm.setPet(pet)崩溃的原因。但是,这里的错误消息对用户来说一点也不友好

尝试:

或更简单:

Pet pet = realm.createObject(Pet.class);
pet.setType("dog");
personFromRealm.setPet(pet);
它们都需要在一个事务中


是为更好的异常消息而创建的。

完美!非常感谢。我甚至没想到。非常感谢你的帮助。
    Realm realm = Realm.getInstance(this);
    Person personFromRealm = realm.where(Person.class).findFirst();

    realm.beginTransaction();
    Pet pet = personFromRealm.getPet();
    pet.setType("dog");
    realm.commitTransaction();
Pet pet = new Pet();
pet.setType("dog");
pet = realm.copyToRealm(pet);
personFromRealm.setPet(pet);
Pet pet = realm.createObject(Pet.class);
pet.setType("dog");
personFromRealm.setPet(pet);