2017-06-04 3 views
0

J'utilise l'expression retrolambdad'expression rxjava de retrolambda au classique

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

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

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

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

      })); 

Tout beau travail. En raison de tests Roboelectric j'ai besoin de convertir l'expression retrolambda classique. J'ai essayé

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

J'ai obtenu l'erreur ne peut pas résoudre méthode "subscribe (anonyme rx.functions.Action1 (java.lang.Object).

+1

On ne sait pas pourquoi vous ne pouvez pas utiliser retrolambda sur vos tests aussi. – Logain

+0

en utilisant retrolambda build test d'exécution a échoué.. 0_101). – eurosecom

+1

Retrolambda devrait aussi fonctionner pour vos tests, vous pouvez essayer de corriger cela avant de déplacer votre code vers les classes anonymes java7. – Logain

Répondre

2

Le Action1 vient de Rx1 pendant que vous utilisez Rx2 . Une exception a eu lieu dans le compilateur (1.8 au lieu de cela, vous devez utiliser l'interface Consumer.

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