android - 使用 RxJava 返回整数 - subscribeOn 的问题
问题描述
@NonNull
private final NoteDao noteDao;
@Inject
public NoteRepository(@NonNull NoteDao noteDao) {
this.noteDao = noteDao;
}
试图完成这个从 Sqlite 数据库返回一个 int PK 的方法。
private void insert(Note note) {
Log.d(TAG, "saveNote: called.");
try {
noteDao.insert(note)
. map(new Function<Long, Integer>() {
@Override
public Integer apply(Long aLong) throws Exception {
long l = aLong;
return (int)l;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe((new io.reactivex.functions.Consumer<Integer>() {
@Override
public void accept(Integer integerResource) {
// work with integerResource
sqCbtId = integerResource;
}
})); new io.reactivex.functions.Consumer<Throwable>() {
@Override
public void accept(Throwable error) {
// report the error
}
};
} catch (Exception e) {
e.printStackTrace();
}
* : java.lang.InstantiationException: java.lang.Class 没有零参数构造函数*
解决方案
尝试这个:
private void insert(Note note) {
Log.d(TAG, "saveNote: called.");
noteDao.insert(note)
.map(new Function<Long, Integer>() {
@Override
public Integer apply(Long aLong) throws Exception {
long l = aLong;
return (int)l;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new io.reactivex.functions.Consumer<Integer>() {
@Override
public void accept(Integer integerResource) {
// work with integerResource
}
}, new io.reactivex.functions.Consumer<Throwable>() {
@Override
public void accept(Throwable error) {
// report the error
}
});
}
推荐阅读
- node.js - navigation.navigate 不改变场景
- python - 如何获取唯一计数并动态生成文本
- python - 为 pandas 中的每个组分配一个等级
- angular - Recaptcha google 上 Angular 6 的实现
- php - 从 php 中的站点中删除 index.php
- javascript - Meteor + LitElement (Polymer 3) 导入问题
- azure - Azure Key Vault 中的最大机密数?
- android - 为什么使用“--prod --release android”构建的 Ionic 3 apk 会给 Google Playstore 错误,即 apk 在调试模式下签名?
- javascript - 使用 javascript 的删除数据功能只能工作一次
- tfs - 从 TFS 2017 中的 AreaID 获取区域详细信息