2016-12-06 60 views
3

我試圖讓使用retrofit and rxJava到API的調用時「型的沒有實例變量R存在,因此可觀察的符合觀察的」錯誤。下面的代碼似乎使用RxJava 1時工作得很好,但一旦我更新到RxJava 2我收到此錯誤:更新到RxJava2

錯誤:

No Instance of type variable R exist so that Observable conforms to Observable

阿比

Observable<HttpResult<List<Article>>> getList(@Query("key")String key); 

API請求在這裏完成,而這正是我進去.map操作此錯誤

Observable cache=providers.getList().map(new HttpRsltFunc<List<Article>>()); 

結果類模型:

private class HttpRsltFunc<T> implements Func1<HttpResult<T>, T> { 
     @Override 
     public T call(HttpResult<T> httpResult) { 
      return httpResult.getData(); 
     } 
    } 

編輯:

進口rx.Observable,而不是io.reactivex.Observable執行代碼時工作得很好。

謝謝

+0

也許把它定義爲'可觀察到<列表

+0

試過了,同樣的問題:/ –

+0

感謝您添加編輯。這也解決了我的問題。 –

回答

3

這是發生,因爲rxjava2遷移到自己的functional interfaces,所以你需要實現的,而不是Func1不同的接口。

而且不要忘了更新改造適配器rxjava2版本: compile 'com.squareup.retrofit2:adapter-rxjava2:latest.version'

+0

是啊,這是問題,事實上,我並沒有使用適當的RxCache新RxJava.Thanks工作。 –