当前位置: 首页 > 知识库问答 >
问题:

RxJava Observer不兼容类型

赵鸿畴
2023-03-14

我正在尝试使用reverfit和RxJava在我正在使用的应用程序中的自定义视图中进行API调用,但是当我尝试订阅来自我的reverfit API调用的Observable时,遇到了一个不兼容类型错误。

我的改装界面:

public interface ApiQueryInterface{
// Request method and URL specified in the annotation
// Callback for the parsed response is the last parameter

@GET("users/")
Observable<Users> getUsers (
        @Query("key") String key,
        @Query("address") String address
);

@GET("posts/")
Observable<Posts> getPosts (
        @Query("key") String key,
        @Query("address") String address
);

}

和位于自定义视图的onFinishInflate()中的改装调用:

        // Create RxJava adapter for synchronous call
    RxJava2CallAdapterFactory rxAdapter = RxJava2CallAdapterFactory.create();

    // Create Retrofit2 instance for API call
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(rxAdapter)
            .build();

    // Make API call using retrofit
    final ApiQueryInterface apiQueryInterface = retrofit.create(ApiQueryInterface.class);

    // API return type defined by interface
    Observable<Users> query = apiQueryInterface
            .getUsers(KEY, ADDRESS)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Observer<Users>() {
                @Override
                public void onSubscribe(Disposable d) {

                }

                @Override
                public void onNext(Users users) {

                }

                @Override
                public void onError(Throwable e) {

                }

                @Override
                public void onComplete() {

                }
            });
}

当我构建项目时,在自定义视图中以可观察的 query=...开头的行中遇到了不兼容类型错误:

错误:(60,27)错误:不兼容类型:void无法转换为可观察的

共有1个答案

葛和志
2023-03-14

RXJava 1返回一个subscription对象,而不是observablerxjava 2订阅返回void。这就是为什么您会得到error:(60,27)error:incompatible types。您将在回调onsubscribe中获得可丢弃的。如果需要对它的引用,则可以在调用回调时将其分配给类级成员

 类似资料:
  • 我正在使用JPA,列类型为: 我使用PostgreSql作为我的数据库,它支持bpchar类型,现在我尝试为我的测试添加H2,但问题是,当我运行测试时,我得到以下结果: 是否有其他方法可以实现这一目标?

  • 我按照这个教程:https://github.com/codepath/android_guides/wiki/Fragment-Navigation-Drawer 现在我在这一点上: 我的问题是这条线... 显示一个错误:不兼容的类型。需要android。应用程序。FragmentManager发现:android。支持v4.app。碎片管理器。 我看到了一些帖子,但它们不适合我。 我用AppC

  • 以下是这个问题,它提供了一个解决方案,但没有解释它(不幸的是,答案中的链接现在没有了): WTF???在上调用返回一个,该不能赋值给类型为的变量,但可以赋值给类型为的变量?扩展Map.Entry >????? 有人能说说这是怎么回事吗?这是否意味着,每当我使用至少2层深度的通配符类型编写方法时,我都必须记住将其设置为在什么地方?

  • 我试图编译一个从SourceForge得到的仍在开发中的项目。这是它的地址:。https://sourceforge.net/p/groove/code/5475/tree/groove/trunk/我知道这个项目经过了很好的验证,它没有任何错误,但是当我要编译它的时候,我遇到了这个编译错误: 错误在这个文件的第370行:https://sourceforge.net/p/groove/code/

  • 我定义jackoson序列化器并将其添加到java类中,如下所示: 编译器出现以下错误: 注释的定义为: 如果我从ReportFilterDeserializer中删除泛型attibute,它将通过编译。我不明白编辑为什么抱怨。

  • 我正在尝试创建一个查找器,它需要几个谓词并减少它们: