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

问题描述 投票:1回答:1

我修改了一些与Rxjava相关的导入。AndroidSchedulersObservable.当我这样做的时候,我得到以下错误。

我不知道该如何处理。

enter image description here

这是我在我的presenter中修改的导入。

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导入的内容。

您的建议很有帮助

android android-gradle-plugin observable rx-java rx-java2
1个回答
1
投票

RxJava 2改变了RxJava 1中的几个类名,特别是。Action1 已改为 Consumer:

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

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

或者,你也可以使用Java 8 lambda。

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

当参数为 subscribe 是固定的,这也将揭示另一个类名的差异。CompositeSubscription 现在是 CompositeDisposable.

© www.soinside.com 2019 - 2024. All rights reserved.