为什么这个简单的 RxJava 示例不能 运行?
Why this simple RxJava example cannot run?
我正在按照这篇文章学习 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();
}
}
让它显示敬酒。
一开始,AndroidStudio生成的代码在Observable中是call(Object o),在Subscriber中是onNext(Object o)
然后我就按照文章改了,把"Object o"改成"Subscriber o"
但是 Android Studio 在订阅者 o 通知我“Class 'Anonymous class derived from OnSubscribe' must be either declared abstract or implement abstract method 'call(T)' in Action1
”。和 onNext()
处的“method does not override method from it's superclass
”
我做错了什么?
从您得到的错误来看,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();
}
}
);
我正在按照这篇文章学习 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();
}
}
让它显示敬酒。
一开始,AndroidStudio生成的代码在Observable中是call(Object o),在Subscriber中是onNext(Object o)
然后我就按照文章改了,把"Object o"改成"Subscriber o"
但是 Android Studio 在订阅者 o 通知我“Class 'Anonymous class derived from OnSubscribe' must be either declared abstract or implement abstract method 'call(T)' in Action1
”。和 onNext()
method does not override method from it's superclass
”
我做错了什么?
从您得到的错误来看,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();
}
}
);