Ich arbeite an Dolch 2 und traf mit einer Abhängigkeit Injektion Problem. Ich werde dir eine Idee zu dem Problem geben. Ich habe eine ApplicationComponent wie unten gezeigt.Dolch 2 Problem mit Sub-Komponente und eine Komponente mit einer Abhängigkeitskomponente
@Singleton
@Component(modules = {AppModule.class, MySubComponent.class})
public interface ApplicationComponent {
void inject(Application app);
List<Integer> pattern;
MySubComponent subcomponent();
}
Wie Sie sehen können, habe ich eine Unterkomponente in der oben genannten Komponente definiert.
ApplicationComponent comp = DaggerApplicationComponent.builder()
.appModule(new ApplicationModule())
.mySubModule(new MySubModule())
.build();
So habe ich eine Anwendungskomponenteninstanz erstellt.
Hier ist die Subkomponente
@Singleton
@Subcomponent(modules = MySubModule.class)
public interface MySubComponent {
void inject(AClass obj);
INeedThis ineedthis();
}
@Module
public class MySubComponent {
@Provides
@Singleton
INeedThis provideINeedThis() {
return new INeedThis();
}
}
ich dann eine andere Komponente erstellt, LoginComponent mit ApplicationComponent als Abhängigkeit
@Scope
@Retention(RetentionPolicy.RUNTIME)
public @interface PerActivity{}
@PerActivity
@Component(dependencies = ApplicationComponent.class, modules = LoginModule.class)
public interface LoginComponent {
void inject(FirstActivity activity);
}
I wie unten LoginComponent Instanz erstellt.
Das Problem tritt auf, wenn ich INeedThis-Objekt in FirstActivity injiziere. Meine Annahme ist, da LoginComponent eine Abhängigkeit von ApplicationComponent hat, die eine Unterkomponente MySubComponent hat, INeedThis-Objekt sollte injiziert werden. Aber in Wirklichkeit versäumt es das und ich bekomme den folgenden Fehler.
Ich habe viele Beiträge zu Unterkomponenten auf Dolch 2 gelesen. Sie funktionierten jedoch nicht wie erwartet. Gibt es etwas, das ich vermisse?
Die Idee der Einrichtung einer Unterkomponente ist schwer zu verstehen. Kannst du mir bitte sagen, wie man eine Unterkomponente einstellt? Im Grunde brauche ich eine ApplicationComponent mit einer Unterkomponente. Alle anderen Komponenten mit ApplicationComponent als Abhängigkeit sollten Zugriff auf die Unterkomponente haben. Korrigiere mich, wenn das nicht die Norm ist! – Renjith
@Renjith Bitte beachten Sie, dass diese Seite für spezielle Programmierfragen und nicht allgemeine Kodierungsinformationen ist. Wie oder warum Sie eine Unterkomponente verwenden müssen, hängt davon ab, was Sie erreichen möchten, und ich kann dies nicht für Sie beantworten. Ich habe die Antwort aktualisiert, wenn Sie noch weitere Informationen benötigen, sollten Sie nach einigen tatsächlichen Tutorials suchen und versuchen Sie ein bisschen selbst –
Danke für Ihre bearbeitete Antwort! Ich habe versucht, es in meine App zu integrieren, aber es hat nicht funktioniert. Vielleicht, was ich erreichen möchte, könnte etwas anders sein. Ich habe jedoch einige der Github-Samples gründlich untersucht und zum Laufen gebracht. – Renjith