mam setup moduleA jako dostawcy aplikacji szeroki Singleton ModuleB jako dostawca obiektów związanych użytkownikaDagger v2: wstrzykiwać 2 różne zakresy w jeden obiekt
Moja użytkownik wyświetlacz fragment będzie wykorzystać szeroki magistrali systemowej, aby wysłać wiadomość do innych, użyj obiektu związanego z użytkownikiem do wyświetlenia.
Problem nie może wstrzyknąć innej klasy scrope w jeden obiekt. Metoda component.getX działa dobrze, ale preferowane jest wstrzykiwanie. Komunikat Błąd: @UserScope nie może odwoływać się powiązania z zakresów różnica: @Provides @Singleton Bus ModuleA.provideBus()
@Module
public class ModuleA {
@Provides @Singleton Bus provideBus() {...}
}
Moduł B jako dostawca informacji związanych użytkownika
@Module
public class ModuleB{
private final User user;
public ModuleB(User user) {...}
@Provides @UserScope User provideUser() {}
@Provides @UserScope UserManager provideUserManager() {}
}
konfiguracji Components na przykład:
@Component (modules={ModuleA.class})
@Singleton
public interface ComponentA {
Bus getBus();
void inject(ClassA target);
}
@Component(modules={ModuleB.class})
@UserScope
public interface ComponentB {
User getUser();
UserManager getUserManager();
void inject(ClassA target);
}
class UserFragment exrtends Fragment {
@Inject Bus bus;
@Inject UserManager userManager;
public void onCreate() {
getComponentA().inject(this);
getComponentB().inject(this);
}
}
Co się stanie, jeśli "MainActivityComponent" jest podkomponentem? –