2016-06-09 38 views
12

Sto cercando di usare Retrofit 2 e RxJava seguendo la guida in questo https://inthecheesefactory.com/blog/retrofit-2.0/enRxJavaCallAdapterFactory non può essere convertito in fabbrica

Nella sezione "Integrazione RxJava con CallAdapter " spiega come utilizzare RxJava con retrofit

Retrofit retrofit = new Retrofit.Builder() 
    .baseUrl("http://api.nuuneoi.com/base/") 
    .addConverterFactory(GsonConverterFactory.create()) 
    .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 
    .build(); 

Tuttavia durante la compilazione c'è il seguente errore:

Error:(63, 71) error: incompatible types: RxJavaCallAdapterFactory cannot be converted to Factory 

Come può Lo aggiusto? Grazie

+0

Avete incluso le dipendenze menzionati? compila 'com.squareup.retrofit: adapter-rxjava: 2.0.0-beta2' compile 'io.reactivex: rxandroid: 1.0.1' –

+0

sì, includo le dipendenze compile 'com.squareup.retrofit: adapter-rxjava: 2.0.0-beta2 ' compile' io.reactivex: rxandroid: 1.0.1 ' –

+0

@LuisaRepele Strano, ma avevo incluso tutte le dipendenze necessarie e Android Studio non riusciva ancora a trovare 'RxJavaCallAdapterFactory'. Quindi aggiungo manualmente "import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;" e ha funzionato. – tchelidze

risposta

40

Assicurarsi di utilizzare lo stesso groupId e la versione per la dipendenza di Retrofit principale, la dipendenza del convertitore di Gson e la dipendenza della scheda RxJava.

Sto indovinando tuo simile a questa:

compile 'com.squareup.retrofit2:retrofit:2.0.2' 
compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2' 

(Si noti che usano diverse groupIds ei numeri di versione)

Dovrebbero tutti uguali in questo modo:

compile 'com.squareup.retrofit2:retrofit:2.0.2' 
compile 'com.squareup.retrofit2:converter-gson:2.0.2' 
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2' 
+0

Grazie per l'attenzione nel codice di versione poiché stavo usando la versione 2.3.0 ma poi ho realizzato il convertitore-gson era 2.1.0 ecco perché ho ricevuto l'errore che non può risolvere RxJavaCallAdapterFactory. Comunque se avessi dato un'occhiata al file gradle c'era tutto il set di librerie. –

2

Attualmente l'aggiunta di "com.squareup.retrofit: adapter-rxjava: 2.0.0" restituisce l'errore seguente

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'. > com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties 

Ma, invece, l'aggiunta di "compilazione 'com.jakewharton.retrofit: retrofit2-rxjava2-adattatore: 1.0.0" , rende il confezionamento di successo

+1

Questo è ancora valido dal 9 marzo 2017. Uso il retrofit 2.2.0, l'adattatore rxjava2 1.0.0 di jakewharton, rxandroid 2.0.1 e rxjava 2.0.7. – Chris

+2

In realtà dovresti importare 'compile 'com.squareup.retrofit2: adapter-rxjava2: 2.2.0'', e quindi usare' .addCallAdapterFactory (RxJava2CallAdapterFactory.create()) ' – Rumid

Problemi correlati