Ich habe eine Komponente, die die aktuelle Aktivität und ihre Fragmente neu gruppiert, da der Bereich nur für diese Aktivität und nicht für die gesamte Anwendung bestimmt sein soll. Also in der OnCreate-Methode dieser Aktivität, ich erstelle meine Komponente und ich injiziere die aktuelle Aktivität (siehe Code unten).Verwenden Sie Dolch 2, ist es richtig, eine Aktivität in seine lokale Komponente zu injizieren?
Ich würde gerne wissen, ob das, was ich tue, richtig ist oder ob es einen besseren Weg gibt, das zu tun?
FYI, ich folge dem MVP-Design-Muster.
Komponente
@Singleton
@Component(modules = {
FragmentX1Module.class,
FragmentX2Module.class,
ActivityXModule.class,
RepositoryModule.class,
})
public interface ActivityXComponent {
void inject(FragmentX1Module fragment);
void inject(FragmentX2Module fragment);
void inject(ActivityXModule activity);
}
Aktivität
private ActivityXComponent mXComponent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_x);
mXComponent = DaggerActivityXComponent.builder()
.activityXModule(new ActivityXModule(this)) // I need the Activity Context for later uses
.build();
mXComponent.inject(this);
// ...
}
Aber muss ich dann noch ActivityX in die ActivityXComponent injizieren? – Eselfar
@Eselar müssen Sie es im Konstruktor für 'ActivityXModule' bereitstellen. – gjsalot