我有這樣的組成:Dagger2:錯誤時兩種組分具有相同的注入方法簽名
@Singleton
@Component(modules = OauthModule.class)
public interface OauthComponent {
void inject(LoginActivity a);
}
和模塊:
@Module
public class OauthModule {
@Provides
@Singleton
Oauth2Service provideOauth2Service() {
return new Oauth2StaticService();
}
}
並且該另一組件:
@Singleton
@Component(modules = LoggedUserModule.class)
public interface LoggedUserComponent {
void inject(LoginActivity a);
}
和我得到這個錯誤:
Error:(15, 10) error: Oauth2Service cannot be provided without an @Provides- or @Produces-annotated method.
如果我改變LoggedUserComponent
的注射方法的參數是另一個Activity
,說AnotherActivity
這樣的:
@Singleton
@Component(modules = LoggedUserModule.class)
public interface LoggedUserComponent {
void inject(AnotherActivity a);
}
編譯就可以了。爲什麼?我不能有兩個組件具有相同的注入簽名嗎?
我想了解Dagger
如何工作,所以任何幫助將不勝感激。謝謝。
如果我的OAuthModule是單例呢?我將永遠無法注射? – sector11
我不確定我是否按照你的要求 – ootinii