【发布时间】:2019-01-10 21:15:56
【问题描述】:
我有一个带有 Room 数据库的简单 Android 应用程序,我正在尝试使用 RxJava 对 @Insert 查询做出反应,但我无法正确链接调用。
这是我调用插入的视图模型方法:
fun insertTopic(): Single<Long> {
val topic = Topic(null, topicText.value!!, difficulty.value!!, false)
return Single.create<Long> { Observable.just(topicDao.insert(topic)) }
}
这是我的活动中触发保存操作的代码:
disposable.add(RxView.clicks(button_save)
.flatMapSingle {
viewModel.insertTopic()
.subscribeOn(Schedulers.io())
}.observeOn(AndroidSchedulers.mainThread())
.doOnError { Toast.makeText(this, "Error inserting topic", Toast.LENGTH_SHORT).show() }
.subscribe { id ->
// NOT INVOKED
hideKeyboard()
Toast.makeText(this, "Topic inserted. ID: $id", Toast.LENGTH_SHORT).show()
this.finish
})
当我单击按钮时,实体被保存,但没有调用任何订阅代码(没有显示 toast)。有人可以向我指出我做错了什么吗?我对 RX java 还很陌生。
【问题讨论】:
-
你试过onNext()吗?或许能解决这个问题?
标签: android kotlin rx-java2 android-room