web-dev-qa-db-ja.com

IllegalArgumentException:rx.Observable RxJava、Retrofit2の呼び出しアダプターが見つかりませんでした

残りのAPIの呼び出し中に上記のエラーが発生します。 retrofit2とRxJavaの両方を使用しています。

ServiceFactory.Java

public class ServiceFactory {
public static <T> T createRetrofitService(final Class<T> clazz, final String endpoint){

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(endpoint)
            //.addConverterFactory(GsonConverterFactory.create())

            .build();

    T service = retrofit.create(clazz);
    return service;
}

}

MovieService.Java

public interface MovieService{
//public final String API_KEY = "<apikey>";
public final String SERVICE_END = "https://api.mymovies.org/3/";
@GET("movie/{movieId}??api_key=xyz")
Observable<Response<Movies>> getMovies(@Field("movieId") int movieId);

}

MainActivityの内部

      MovieService   tmdbService = ServiceFactory.createRetrofitService(MovieService.class, MovieService.SERVICE_END);
    Observable<Response<Movies>> responseObservable = tmdbService.getMovies(400);
    responseObservable .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<Response<Movies>>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onNext(Response<Movies> moviesResponse) {

                }
            });
22
Hemendra Sethi

必ずimplementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'または使用しているバージョンを依存関係に追加してから、そのコンバーターでレトロフィットを構成してください。

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(endpoint)
    .addConverterFactory(GsonConverterFactory.create())
    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
    .build();

更新済み

RxJavaCallAdapterFactoryRxJava2CallAdapterFactory に名前が変更されました。上記の切り取りを変更しました。

55
Logain

RxJava2の場合は、compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())

使用方法の詳細については、 https://github.com/JakeWharton/retrofit2-rxjava2-adapter

13

最新バージョンのすべてのRx依存関係を使用する必要があります。ここでは、バージョン2rxjava2

implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'io.reactivex.rxjava2:rxjava:2.1.9'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

enter image description here

そしてもう1つ追加します。

addCallAdapterFactory(RxJava2CallAdapterFactory.create())

retrofit Apiクライアントの場合:

retrofit = new Retrofit.Builder()
                    .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .baseUrl(BASE_URL)
                    .build();
7
Geet Thakur

上記のGithubプロジェクトページから:

Blockquoteこれは廃止されました! Retrofit 2.2以降には、RxJava 2のファーストパーティコールアダプターがあります。 https://github.com/square/retrofit/tree/master/retrofit-adapters/rxjava2

app/build.gradleファイルに含める必要があります:

compile 'com.squareup.retrofit2:adapter-rxjava2:latest.version'
2
Dennis Volkmer

私の場合、置き換えるだけで十分でした

.addCallAdapterFactory(RxJavaCallAdapterFactory.create())

.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
1
Andrey