dev*_*033 3 java android realm
我正在使用领域,所有看起来都很好,直到我尝试在我的数据库中添加初始数据.
我在这个答案中遵循了这个例子,所以在我的课程中,继承自Application,我有以下内容:
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Realm.init(this);
final Map<String, String> map = new LinkedHashMap();
map.put("Key1", "value1");
map.put("Key2", "value2");
RealmConfiguration config = new RealmConfiguration.Builder().initialData(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
int i = 1;
for (Map.Entry entry : map.entrySet()) {
realm.beginTransaction();
Category c = realm.createObject(Category.class, i++);
c.setName((String) entry.getKey());
c.setDescription("Category #" + entry.getValue());
realm.commitTransaction();
}
realm.close();
}
}).deleteRealmIfMigrationNeeded().name("realm.db").build();
Realm.setDefaultConfiguration(config);
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这种配置应该可行,但是我收到以下错误:
java.lang.IllegalStateException:Realm已经在/ path /中写入事务了...
有什么东西我不见了吗?
提前致谢.
删除realm.beginTransaction(),realm.commitTransaction()并realm.close()打电话.这public void execute(Realm realm)是一个Realm.Transaction类的方法,它将处理启动和提交事务:
RealmConfiguration config = new RealmConfiguration.Builder().initialData(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
int i = 1;
for (Map.Entry entry : map.entrySet()) {
Category c = realm.createObject(Category.class, i++);
c.setName((String) entry.getKey());
c.setDescription("Category #" + entry.getValue());
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2178 次 |
| 最近记录: |