java - 为什么这个简单的 RxJava 示例无法运行?

标签 java android rx-java rx-android

我正在按照这篇文章学习RxJava:http://blog.danlew.net/2014/09/15/grokking-rxjava-part-1/

第一个示例使用 RxJava 打印字符串。我对它做了一点改变。请参阅以下代码。

Observable myObservable = Observable.create(
        new Observable.OnSubscribe() {
            @Override
            public void call(Subscriber<? super String> o) {
                o.onNext("hello world");
                o.onCompleted();
            }
        }
);

Subscriber mySubscriber = new Subscriber() {
    @Override
    public void onCompleted() {

    }

    @Override
    public void onError(Throwable e) {

    }

    @Override
    public void onNext(String s) {
        Toast.makeText(mActivity,s,Toast.LENGTH_SHORT).show();
    }
}

只要让它显示 toast 即可。

首先,Android Studio生成的代码在Observable中是call(Object o),在Subscriber中是onNext(Object o)

然后我按照文章进行了更改,将“Object o”更改为“Subscriber o”

但是 Android Studio 通知我“订阅者 o 上的“类‘从 OnSubscribe 派生的匿名类’必须声明为抽象或在 Action1 中实现抽象方法‘call(T)’””。并且 onNext() 处的“方法不会覆盖其父类(super class)中的方法

我做错了什么?

最佳答案

从你得到的错误来看,它看起来像 Subscriber<? super String> o不是调用方法所期望的前一个参数。使用<String>因为类型应该修复它

Observable<String> myObservable = Observable.create(
        new Observable.OnSubscribe<String>() {
            @Override
            public void call(Subscriber<? super String> o) {
                o.onNext("hello world");
                o.onCompleted();
            }
        }
);

关于java - 为什么这个简单的 RxJava 示例无法运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32559540/

相关文章:

用于创建图表的 java 小程序

android - 使用 MediaRouteButton 将视频转换到电视

android - 如何在灵活的应用内更新 android 中下载完成时收到通知?

rx-java - RxJava Conditional FlatMap Cleaner Way

java - 在 Spring boot Transaction 中以只读方式执行 RxJava observable?

java - 做一个 java 测验并重复错误的答案?

java - java Swing 中可以修改图像的颜色吗?

java - 如何用java制作Excel表格

java - 如何使用共享首选项将所有地址值存储在单个键中

android - 如何使用 RxJava 获取 map 函数返回的结果?