无法在Room dao界面中使用Completable

RuN*_*280 5 kotlin rx-java android-room

我试图Completable在Dao类中使用带@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()
Run Code Online (Sandbox Code Playgroud)

这是我的相关代码:

@Insert
fun insert(kanal: Kanal): Completable
@Update
fun update(kanal: Kanal): Completable
@Delete
fun delete(kanal: Kanal): Completable
Run Code Online (Sandbox Code Playgroud)

而我的依赖:

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'
Run Code Online (Sandbox Code Playgroud)

根据此链接,它得到Room的支持。

mus*_*off 9

@ Insert,@ Update和@Delete方法:Room 2.1.0和更高版本支持Completable,Single和Maybe类型的返回值。

将您的房间从升级1.1.12.1.0或更高,它将可以正常工作。

  • @DynoCris不幸的是,所有新功能都将在`androidx`中提供。android.arch.persistence.room的最新版本是1.1.1。如果要在Room中使用Completable,则必须迁移到androidx (2认同)