如何修复错误 - 无法解析方法 'subscribe(anonymous rx.functions.Action1<java.lang.boolean>)

How to fix error - cannot resolve method 'subscribe(anonymous rx.functions.Action1<java.lang.boolean>)

我更改了一些与 AndroidSchedulersObservable 相关的 Rxjava 导入。当我这样做时,出现以下错误。

我不确定如何进行。

错误

这些是我在演示者中更改的导入。

import io.reactivex.Flowable;
//import rx.schedulers.Schedulers;
import io.reactivex.schedulers.Schedulers;
//import rx.Observable;
import io.reactivex.Observable;
//import rx.android.schedulers.AndroidSchedulers;
import io.reactivex.android.schedulers.AndroidSchedulers;

如图所示,这段代码有错误

  public void setUserFocusChangeObservable(Observable<Boolean> observable) {
        subscriptions.add(observable
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<Boolean>() {
                    @Override
                    public void call(Boolean hasFocus) {
                        //If screen is dimmed, do not allow interaction
                        if (!screenUtils.isScreenDimmed()) {
                            if (user != null) {
                                if (!hasFocus) {
                                    view.renderUserText(user.toString());
                                }
                            } else {
                                //Set text to nothing if interaction happens with autosuggest when screen is dimmed
                                view.renderUserText("");
                            }
                        }
                    }
                }));
    }

在图片中我还突出显示了我从 Gradle

进口的商品

你的建议很有帮助 R

RxJava 2 从 RxJava 1 中更改了几个 class 名称。特别是,Action1 has been changed to Consumer:

            .subscribe(new Consumer<Boolean>() { /* ... */ })

确保导入 io.reactivex.functions.Consumer 而不是 java.util.function.Consumer

或者,您可以使用 Java 8 lambda:

            .subscribe(hasFocus -> { /* ... */ })

subscribe 的参数固定时,这也会显示另一个 class 名称差异:CompositeSubscription 现在是 CompositeDisposable