android - 在 Retrofit 2 上使用 RxJavaCallAdapterFactory 时出现 AbstractMethodError

标签 android retrofit rx-java rx-android

我收到这个错误:

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)

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

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

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

mForumApi = retrofit.create(ForumApi.class);

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

我的接口(interface)方法是:

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

我通过以下方式调用它:

   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 返回 mForumApi
getPosts是错误发生的地方,是API调用

最佳答案

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

更改(注意 beta1):

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

到(现在是 beta2)

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

让它对我有用。

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

关于android - 在 Retrofit 2 上使用 RxJavaCallAdapterFactory 时出现 AbstractMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33077292/

相关文章:

android - RXJava 处理嵌套调用

java - 使用InputMethodManager时给出空指针 imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

递归调用Android sqlite getdatabase

android - map 中的翻新+ RX错误处理

java - 避免 MissingBackpressureException 异常

java - Rxjava 调度程序在最后一行之后不会运行

xml - android中的xpath评估错误

java - 安卓 : Download a single file in many parts

android - 使用 OAuth2 改进异步调用

java - 如何获取json的索引并在pojo类中使用它