首页 > 解决方案 > 无法在写入事务领域 Android 之外修改托管对象

问题描述

我在更新领域对象时遇到问题。我有 4 个片段。我将值从一个片段传递到下一个片段。共有 16 个字段。第一个片段包含 4 个,依此类推。首先,我使用这种方法保存 4 个前四个字段的对象:-

public static <T extends RealmObject> void InsertRecordinRealm(final Class<T> clazz, final T passedObject, final Integer integerd) {
    Realm realm = getRealmInstance();
    realm.executeTransaction(new Realm.Transaction() {
        @Override
        public void execute(Realm realm) {
            realm.copyToRealmOrUpdate(passedObject);
        }
    });
    realm.close();
}

现在,我使用这种方法从第一个片段到第二个片段的值:-

public static <T extends RealmObject> T GetRecordById(Class<T> clazz, Integer id) {
    RealmQuery<T> queryForUsern = getRealmInstance().where(clazz).equalTo("RealmId", 1);
    T recordByid = queryForUsern.findFirst();
    return recordByid;
}

在这里,我得到了正确的对象。但是,当我使用第二个片段的值更新对象时,我收到此错误“无法在写入事务之外修改托管对象”

在第二个片段中,我正在使用以下内容更新对象:-

public static <T extends RealmObject> void UpdateRecordinRealmByID(final T passedObject, final Class<T> clazz, final Integer Id) {
        Realm realm = getRealmInstance();
        realm.executeTransaction(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {

                RealmQuery<T> queryForUsern = 
                getRealmInstance().where(clazz).equalTo("RealmId", 1);
                T recordByid = queryForUsern.findFirst();
                recordByid = passedObject;
                realm.insertOrUpdate(recordByid);
            }
        });
        realm.close();
    }

帮助将不胜感激!提前致谢

标签: androidandroid-fragmentsrealm

解决方案


好吧,在我的情况下,我正在更新之外的领域对象的值realm.executeTransaction {},只要我将代码移到其中realm.executeTransaction {},错误就消失了。


推荐阅读