尽管使用 realm.beginTransaction() 获取 illegalStateException

Getting illegalStateException inspite using realm.beginTransaction()

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

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();

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

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

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

并且每次你想创建一个 Realm Instance 调用 -

Realm.getDefaultInstance()