2017-04-22 79 views
2

我想观察主线程观察的主线程使用:俊男observeOn'与RxKotlin

// Kotlin Code 
    Observable 
     .observeOn(AndroidSchedulers.mainThread()) 

但我发现了以下错误:

Type Mismatch: 
     Required: rx.Scheduler! 
     Found: io.reactivex.Scheduler! 

可观察到的我” m订阅来自用Java编写的库,因此使用RxJava。

我是不是很愚蠢,错过了什么?我puzzeled:提前:) $

感谢

+0

https://github.com/ReactiveX/RxAndroid/issues/348可能帮助呢? 什么是您的rx相关进口? – FWeigl

+0

谢谢,@Ascorbin。这个问题的帖子确实有帮助,我意识到我使用的是导入的'rx.Observable'库,所以我将它更改为'io.reactivex.Observable',但这并没有解决问题。 –

回答

4
Required: rx.Scheduler! 

Required指签名是Observable.observeOn(rx.Scheduler)

Found: io.reactivex.Scheduler! 

Found指签名是io.reactivex.Scheduler AndroidSchedulers.mainThread()

这意味着Observable是一个RxJava 1可观察的,而所使用的RxAndroid版本是为RxJava 2构建的。既然你提到的可观察到的是它意味着你有3种选择来解决这个库是用RxJava 1

建库提供:

  1. 弄清楚,如果有问题的图书馆有一个RxJava 2版或者自己将这些更新贡献给项目。
  2. 使用akarnokd/RxJava2InteropObservable转换为RxJava 2(RxJavaInterop.toV2Observable(Observable);
  3. 交换机的其他依赖回RxJava 1
+0

感谢您的明确解释!奇怪的是我升级了库到RxJava2,问题依然存在。 –

+0

RxJava和RxJava 2使用完全不同的包,因此如果RxJava 1仍然可用,只需将RxJava 2作为依赖项添加就不会改变任何内容。 – Kiskae

+0

是的,我知道,我也从'rx.Observable'切换到'io.reactivex.Observable'。仍然没有成功:( –

0

请包括这个在您的gradle这个进口

rxandroid_version =“2.0 .1"

实施 “io.reactivex.rxjava2:rxandroid:$ rxandroid_version”

添加到您的项目

进口io.reactivex.android.schedulers.AndroidSchedulers