Dagger 2 inietta il metodo

Sto giocando con Dagger 2 .

Ho il seguente Module :

 @Module public class GameSetupModule { @Provides @Singleton GameSetup provideGameSetup() { return new GameSetup(); } } 

e il relativo Component :

 @Singleton @Component(modules = {GameSetupModule.class}) public interface GameSetupComponent { GameSetup provideGameSetup(); void inject(SetupActivity activity); // void inject(Fragment fragment); void inject(SetupCompletedFragment fragment); void inject(SelectQuarterLengthFragment fragment); void inject(SelectTeamColorsFragment fragment); void inject(SelectUserRoleFragment fragment); } 

Come potete vedere il GameSetup deve essere iniettato in diversi frammenti diversi come questo:

 @Inject GameSetup gameSetup; onCreate(){ getGameSetupComponent().inject(this); } 

Funziona bene quando implementato come visto in precedenza, l'iniezione non funziona però quando uso un solo metodo

  void inject(Fragment fragment); 

per tutti i frammenti.

Sto facendo qualcosa di sbagliato o questo è anche inteso per avere più controllo su where il GameSetup può essere iniettato e where potrebbe non essere disponibile?

One Solution collect form web for “Dagger 2 inietta il metodo”

Dagger2 non support le iniezioni di class di base fuori dalla scatola.

Un metodo come void inject(Fragment fragment); inietta solo i campi specificati con @Inject all'interno della class Fragment e non le sue sottoclassi.

Secondo Jackhexen su Reddit, ciò che si sta facendo è ansible fare con la riflessione . Ma la riflessione può rompere Proguard.

Personalmente vorrei votare per questa soluzione .

L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.