我正在按照这篇文章学习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/