Я пытаюсь inject
в моем presenter
и interactor
, но выдает мне ошибку, кажется, я не могу ввести в классе, который вводит в другой:
error: [Dagger/DuplicateBindings] com.example.calculadora.Data.Interactor.Operacion is bound multiple times:
@Provides com.example.calculadora.Data.Interactor.Operacion com.example.calculadora.Inject.InteractorModule.provideDiv()
@Provides com.example.calculadora.Data.Interactor.Operacion com.example.calculadora.Inject.InteractorModule.provideMult()
@Provides com.example.calculadora.Data.Interactor.Operacion com.example.calculadora.Inject.InteractorModule.provideResta()
@Provides com.example.calculadora.Data.Interactor.Operacion com.example.calculadora.Inject.InteractorModule.provideSuma()
com.example.calculadora.Data.Interactor.Operacion is injected at
com.example.calculadora.Domain.PresenterImpl.operacion
com.example.calculadora.Domain.PresenterImpl is injected at
com.example.calculadora.Inject.InteractorComponent.inject(com.example.calculadora.Domain.PresenterImpl)
Это мой InteractorModule
, который предоставляет мне 4 класса в зависимости от того, что я хочу использовать, и где, кажется, проблема:
@Module
public class InteractorModule {
@Provides
public Operacion provideSuma() {
return new InteractorSuma();
}
@Provides
public Operacion provideResta() {
return new InteractorResta();
}
@Provides
public Operacion provideDiv() {
return new InteractorDivision();
}
@Provides
public Operacion provideMult() {
return new InteractorMultiplicacion();
}
}
Я хочу добавить сюда вместо init новые элементы:
@Override
public void setCalculo() {
Operacion operacion = null;
String[] operandos = vista.getOperandos();
Operando operando1 = new Operando(Integer.parseInt(operandos[0]));
Operando operando2 = new Operando(Integer.parseInt(operandos[1]));
switch (tipoOperacion) {
case SUMA:
operacion = new InteractorSuma(operando1, operando2);
break;
case RESTA:
operacion = new InteractorResta(operando1, operando2);
break;
case MULT:
operacion = new InteractorMultiplicacion(operando1, operando2);
break;
case DIV:
operacion = new InteractorDivision(operando1, operando2);
break;
}
operacion.calcular();
vista.mostrarResultado(String.valueOf(operacion.getResultado().getValor()));
}