使用realm.beginTransaction()获取illegalStateException

时间:2015-11-27 12:14:59

标签: android realm

我在修改模型时遇到此错误 -

java.lang.IllegalStateException: Changing Realm data can only be done from inside a transaction.

这是我的代码 -

Realm realm = ProjectUtil.getRealmWithConfiguration(mActivity);
realm.beginTransaction();

if (something) {
    wordModel.setSomething(something);
} else {
    wordModel.setSomething(false);
}
realm.commitTransaction();

Screenshot

2 个答案:

答案 0 :(得分:0)

您的RealmObject很可能与给定的Realm实例无关,并且可能与不同的realm实例相关联。你如何获得wordModel对象?如果您像WordModel wordModel = new WordModel();那样创建它,那么您应该使用realm.copyToRealmOrUpdate(wordModel)方法将其复制到领域。

答案 1 :(得分:0)

我多次阅读领域documentation后找到了答案。事实证明,每次制作RealmConfiguration实例时,您都无法构建Realm。而是在应用程序类中设置默认配置,如 -

RealmConfiguration config = new RealmConfiguration.Builder(context)
                .name("realmFile.realm")
                .encryptionKey("yourKey".getBytes())
                .migration(new Migration())
                .build();
Realm.setDefaultConfiguration(config);

并且每次要创建Realm Instance调用时 -

Realm.getDefaultInstance()