У меня есть простое приложение Android с базой данных Room, и я пытаюсь отреагировать на запрос @Insert
с помощью RxJava, но я не могу правильно связать вызовы.
Это мой метод модели представления, вызывающий вставку:
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
})
Когда я нажимаю кнопку, объект сохраняется, но не вызывается код подписки (тост не отображается). Может ли кто-нибудь указать мне, что я делаю не так? Я довольно новичок в RX Java.