0

我使用 retrolambda 表达式

 _rxBus = getRxBusSingleton();
    _disposables = new CompositeDisposable();

    ConnectableFlowable<Object> tapEventEmitter = _rxBus.asFlowable().publish();

    _disposables
            .add(tapEventEmitter.subscribe(event -> {

             if (event instanceof EmployeeMvvmActivity.TapEvent) {
                _showTapText();
            }

            }));

一切正常。由于 Roboelectric 测试,我需要将 retrolambda 表达式转换为经典表达式。我努力了

_disposables.add(tapEventEmitter.subscribe(new Action1<Object>() {
        @Override
        public void call(Object event) {
            if (event instanceof EmployeeMvvmActivity.TapEvent) {
                _showTapText();
            }
        }
    }));

我有错误无法解析方法“订阅(匿名 rx.functions.Action1(java.lang.object)”。

4

1 回答 1

2

Action1您使用 Rx2 时,它来自 Rx1。相反,您必须使用Consumer界面。

_disposables.add(tapEventEmitter.subscribe(new Consumer<Object>() {
    @Override
    public void accept(Object event) {
        if (event instanceof EmployeeMvvmActivity.TapEvent) {
            _showTapText();
        }
    }
}));
于 2017-06-04T22:00:07.830 回答