J'essayais de contourner Dagger2 mais j'ai eu des problèmes avec l'injection sur le terrain, et voici mon code.Dagger2 ne peut pas injecter de champ à l'intérieur de la classe injectée
classes POJO:
// User.java
public class User {
private String firstName, lastName;
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
La classe que je ne peux pas injecter le champ user
.
//BackendService.java
public class BackendService {
@Inject
public User user; // Not injected -> Null
@Inject
public BackendService() {
}
}
classe fournisseur d'utilisateur
// UserModule.java
@Module
public class UserModule {
@Provides
@Singleton
User providesUser() {
return new User("AA","BB");
}
}
fournisseur backend classe
// BackendServiceModule.java
@Module
public class BackendServiceModule {
@Provides
BackendService provideBackendService() {
return new BackendService();
}
}
Et last but not least, le composant
// ApplicationComponent.java
@Component(modules = {UserModule.class, BackendServiceModule.class})
public interface ApplicationComponent {
BackendService provideBackendService();
void inject(ConsumerMain consumerMain);
}
Le problème est que dans BackendService.java
le domaine user
ne s'injecte pas.
injection fonctionne correctement sur BackendService
Cela a résolu mes problèmes, merci d'illustrer le problème :-) –