Dies macht mich verrückt. Ich kann mir nicht vorstellen, was das Problem damit ist.Cant herauszufinden, "kann nicht ohne eine @ bereitgestellt-kommentierte Methode" Fehler
Code:
public interface IMinutesCounter {
void startTimer();
void stopTimer();
}
und Umsetzung:
public class MinutesMonitor implements IMinutesCounter {
private ITimerCallback timerCallback;
@Inject
public MinutesMonitor(ITimerCallback timerCallback) {
this.timerCallback = timerCallback;
}
void startTimer(){...}
void stopTimer(){...}
}
CallAlarm
Umsetzung ITimerCallback
public class CallAlarm implements MinutesMonitor.ITimerCallback {
@Inject
public IMinutesCounter minutesMonitor;
public CallAlarm (HealthService context) {
this.minutesMonitor = minutesMonitor;
....
}
}
Wie Sie sehen können, IMinutesCounter
benötigt eine MinutesMonitor.ITimerCallback
.
Was ich will, ist - ** Von der CallAlarm
Klasse (implementierende MinutesMonitor.ITimerCallback
) ** injizieren mich (this
) die IMinutesCounter
zu instanziiert.
Dagger 2 Teil:
@Module
public class CallAlarmModule {
IMinutesCounter.ITimerCallback timerCallBack;
public CallAlarmModule(IMinutesCounter.ITimerCallback timerCallBack) {
this.timerCallBack = timerCallBack;
}
@Provides
public IMinutesCounter.ITimerCallback provideCallAlarm() {
return timerCallBack;
}
}
und:
@Component(modules = CallAlarmModule.class)
public interface CallAlarmComponent {
void injectTimerCallback(IMinutesCounter.ITimerCallback service);
}
es gibt mir
error: IMinutesCounter cannot be provided without an @Provides- or @Produces-annotated method.
danke für deine antwort. Wenn ich die Variable in CallAlarm so ändere, dass sie wie gesagt MinutesMonitor ist, bekomme ich denselben Fehler aber über ITimerCallback - "ITimerCallback kann nicht ohne eine Provided- oder Producens-Annotated-Methode bereitgestellt werden", und wenn ich dann im MinutesMonitor den Konstruktor ändere accept "CallAlarm" anstelle von "ITimerCallback" -> Ich bekomme "dependency cycle" Fehler –
@OfekAgmon Ja, das ist das gleiche Problem, wieder, mit der Schnittstelle nicht gefunden. Sie sollten Ihre Schnittstellen wahrscheinlich bereitstellen und sich nicht auf Ihre Implementierung verlassen, wie in den 2 Codebeispielen unten gezeigt. der Zyklus ist ein ganz anderes Problem, für das es keine _easy_ Lösung gibt, können Sie darüber lesen, wenn Sie nur nach '[dagger-2] zyklischen' oder '[dagger-2] Zyklus suchen, hier auf SO –
Ich fügte hinzu ersten Snippet, den du gepostet hast, und den anderen Code gelassen hast, wie es ist - ich habe immer noch denselben Fehler, kann IMinutesCounter –