2017-04-22 29 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

相關問題