android - 无法在写入事务领域 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();
}
帮助将不胜感激!提前致谢
解决方案
好吧,在我的情况下,我正在更新之外的领域对象的值realm.executeTransaction {}
,只要我将代码移到其中realm.executeTransaction {}
,错误就消失了。
推荐阅读
- node.js - Mongodb:不能 $push 一个对象到一个数组中?
- layout - 如何创建复杂的 Bootstrap 4 布局
- swift - 使用 CodingKeys 访问结构变量的值
- java - 按住 shift 时 Java 中的 KeyBinds 中断
- mysql - RDS 中多个请求的性能缓慢
- spring-boot - 如何更改 swagger-ui.html 默认路径
- php -
- java - 我的 MapReduce 程序出错,我想在其中收集多年来的最高温度
- powershell - 用于从 list.txt 复制文件的批处理文件/Powershell 脚本
- c# - 必须保存数组元素的位置