Невозможно использовать Completable в комнате дао интерфейс - PullRequest
0 голосов
/ 03 декабря 2018

Я пытаюсь использовать Completable в классе Дао для @Insert аннотированных методов, но при попытке скомпилировать проект у меня появляется эта ошибка:

error: Methods annotated with @Insert can return either void, long, Long, long[], Long[] or List<Long>.
public abstract io.reactivex.Completable insert(@org.jetbrains.annotations.NotNull()

Вот мои соответствующие коды:

@Insert
fun insert(kanal: Kanal): Completable
@Update
fun update(kanal: Kanal): Completable
@Delete
fun delete(kanal: Kanal): Completable

И мои зависимости:

def room_version = "1.1.1"
implementation "android.arch.persistence.room:runtime:$room_version"
kapt "android.arch.persistence.room:compiler:$room_version"
implementation "android.arch.persistence.room:rxjava2:$room_version"
implementation 'io.reactivex.rxjava2:rxkotlin:2.2.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'

По этой ссылке поддерживается Room.

Ответы [ 2 ]

0 голосов
/ 15 августа 2019

Completable не работает с @Insert в версии Room 1.1.1.Вы должны использовать версию 2.1.0 или выше, которая доступна только в Android X.

Обязательно используйте эти зависимости вместо обычных android.arch.persistence.room:

def room_version = "2.2.0-alpha02"
implementation "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version" // For Java use annotationProcessor instead of kapt
implementation "androidx.room:room-rxjava2:$room_version"
testImplementation "androidx.room:room-testing:$room_version"

Вот ссылка , обеспечивающая все зависимости Room X от Android.

0 голосов
/ 04 декабря 2018

@ Методы вставки, @Update и @Delete: Комната 2.1.0 и выше поддерживает возвращаемые значения типа Completable, Single и Maybe.

Обновите свою комнату с 1.1.1 до 2.1.0 или выше, и это будет работать.

...