在 Retrofit 2 上使用 RxJavaCallAdapterFactory 时出现 AbstractMethodError [英] AbstractMethodError when using RxJavaCallAdapterFactory on Retrofit 2

查看:72
本文介绍了在 Retrofit 2 上使用 RxJavaCallAdapterFactory 时出现 AbstractMethodError的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到此错误:

致命异常:主要E/AndroidRuntime:java.lang.AbstractMethodError:未实现抽象方法在改造.RxJavaCallAdapterFactory.get(RxJavaCallAdapterFactory.java)在retrofit.Retrofit.nextCallAdapter(Retrofit.java:189)在retrofit.Retrofit.callAdapter(Retrofit.java:175)在改造.MethodHandler.createCallAdapter(MethodHandler.java:45)在改造.MethodHandler.create(MethodHandler.java:26)在retrofit.Retrofit.loadMethodHandler(Retrofit.java:151)at retrofit.Retrofit$1.invoke(Retrofit.java:132)在 $Proxy0.getPosts(本机方法)

尝试在改造中使用 RxJavaCallAdapterFactory 时.我正在使用 com.squareup.retrofit:retrofit:2.0.0-beta1com.squareup.retrofit:adapter-rxjava:2.0.0-beta1.>

这是我创建 api 接口的方式:

Retrofit 改造 = new Retrofit.Builder().baseUrl(FORUM_SERVER_URL).addCallAdapterFactory(RxJavaCallAdapterFactory.create()).addConverterFactory(GsonConverterFactory.create()).建造();mForumApi = retrofit.create(ForumApi.class);

FORUM_SERVER_URL 是
private static final String FORUM_SERVER_URL = "http://jsonplaceholder.typicode.com";

我的接口方法是:

@GET("/posts")public Observable<List<Post>>getPosts();

我通过以下方式调用它:

 mForum.getApi().getPosts().subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer>() {@覆盖公共无效 onCompleted() {}@覆盖public void onError(Throwable e) {}@覆盖public void onNext(List posts) {mView.displayPosts(posts);}});}

getApi 返回 mForumApi
getPosts 是错误发生的地方,它是 API 调用

解决方案

对我来说,事实证明我使用的是组件的不同测试版

变化(注意 beta1):

compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'编译'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1'

到(现在是 beta2)

compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'编译'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'

让它对我有用.

愚蠢的错误,但是是的...

I get this error:

FATAL EXCEPTION: main
E/AndroidRuntime: java.lang.AbstractMethodError: abstract method not implemented
at retrofit.RxJavaCallAdapterFactory.get(RxJavaCallAdapterFactory.java)
at retrofit.Retrofit.nextCallAdapter(Retrofit.java:189)
at retrofit.Retrofit.callAdapter(Retrofit.java:175)
at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:45)
at retrofit.MethodHandler.create(MethodHandler.java:26)
at retrofit.Retrofit.loadMethodHandler(Retrofit.java:151)
at retrofit.Retrofit$1.invoke(Retrofit.java:132)
at $Proxy0.getPosts(Native Method)

when trying to use RxJavaCallAdapterFactory on retrofit. I'm using com.squareup.retrofit:retrofit:2.0.0-beta1 and com.squareup.retrofit:adapter-rxjava:2.0.0-beta1.

Here's how I created the api interface:

Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(FORUM_SERVER_URL)
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
        .addConverterFactory(GsonConverterFactory.create())
        .build();

mForumApi = retrofit.create(ForumApi.class);

The FORUM_SERVER_URL is
private static final String FORUM_SERVER_URL = "http://jsonplaceholder.typicode.com";

my interface method is:

@GET("/posts")
public Observable<List<Post>> getPosts();

I call it via:

   mForum.getApi()
            .getPosts()
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<List<Post>>() {
                @Override
                public void onCompleted() {}
                @Override
                public void onError(Throwable e) {}
                @Override
                public void onNext(List<Post> posts) {
                    mView.displayPosts(posts);
                }
            });
}

getApi returns mForumApi
getPosts is where the error happens, it's the API call

解决方案

For me it turned out that I was using different beta versions of the components

Changing (notice beta1):

compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta1'

to (now beta2)

compile 'com.squareup.retrofit:converter-simplexml:2.0.0-beta2'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'

made it work for me.

Stupid error but yeah...

这篇关于在 Retrofit 2 上使用 RxJavaCallAdapterFactory 时出现 AbstractMethodError的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆