Tus*_*ale 5 android realm android-fragments
我在更新领域对象时遇到问题。我有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();
}
Run Code Online (Sandbox Code Playgroud)
现在,我使用此方法将值从第一个片段获取到第二个片段:-
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;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我正确地获取了对象。但是当我使用第二个片段的值更新对象时,我收到此错误“无法在写事务之外修改托管对象”
在第二个片段中,我正在使用以下内容更新对象:-
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();
}
Run Code Online (Sandbox Code Playgroud)
帮助将不胜感激!提前致谢
代替
RealmQuery<T> queryForUsern =
getRealmInstance().where(clazz).equalTo("RealmId", 1);
Run Code Online (Sandbox Code Playgroud)
做这个:
RealmQuery<T> queryForUsern = realm.where(clazz).equalTo("RealmId", 1);
Run Code Online (Sandbox Code Playgroud)
说明:executeTransaction()已经给定了一个带有开放事务的领域实例。您必须使用该领域实例。在您的代码中,您获取了一个“新”领域实例,没有打开的事务,因此出现错误。
| 归档时间: |
|
| 查看次数: |
9865 次 |
| 最近记录: |