This is driving me crazy. I can't seem to figure what is the problem with this.
Code:
public interface IMinutesCounter {
void startTimer();
void stopTimer();
}
and implementation:
public class MinutesMonitor implements IMinutesCounter {
private ITimerCallback timerCallback;
@Inject
public MinutesMonitor(ITimerCallback timerCallback) {
this.timerCallback = timerCallback;
}
void startTimer(){...}
void stopTimer(){...}
}
CallAlarm
implementing ITimerCallback
public class CallAlarm implements MinutesMonitor.ITimerCallback {
@Inject
public IMinutesCounter minutesMonitor;
public CallAlarm (HealthService context) {
this.minutesMonitor = minutesMonitor;
....
}
}
As you can see, IMinutesCounter
needs a MinutesMonitor.ITimerCallback
.
What I want is - ** From the CallAlarm
class (implementing MinutesMonitor.ITimerCallback
)**inject myself (this
) to instantiate the IMinutesCounter
.
Dagger 2 part:
@Module
public class CallAlarmModule {
IMinutesCounter.ITimerCallback timerCallBack;
public CallAlarmModule(IMinutesCounter.ITimerCallback timerCallBack) {
this.timerCallBack = timerCallBack;
}
@Provides
public IMinutesCounter.ITimerCallback provideCallAlarm() {
return timerCallBack;
}
}
and:
@Component(modules = CallAlarmModule.class)
public interface CallAlarmComponent {
void injectTimerCallback(IMinutesCounter.ITimerCallback service);
}
it gives me
error: IMinutesCounter cannot be provided without an @Provides- or @Produces-annotated method.