【发布时间】:2019-11-17 10:31:50
【问题描述】:
我有一个名为 LoginService 的 IntentService 我尝试使用 LoginScope 将它贡献给 loginActivity
将登录活动贡献给 Dagger Graph:
@LoginScope
@ContributesAndroidInjector(
modules = {
LoginViewModelModule.class,
LoginFragmentBuilderModule.class,
LoginNetworkBuilderModule.class,
LoginServiceBulderModule.class
}
)
abstract LoginActivity contributeLoginActivity();
另外,我尝试贡献将 DaggerIntentService 扩展至 Graph 的 LoginService:
LoginServiceBulderModule.class:
@ContributesAndroidInjector
abstract LoginService contributeLoginService();
登录服务类:
public class LoginService extends DaggerIntentService {
private static final String TAG = "LoginService";
@Inject
LoginFirebaseHelper loginFirebaseHelper;
public LoginService() {
super("LoginService");
}
@Override
protected void onHandleIntent(Intent intent) {
Log.d(TAG, "onHandleIntent: LoginService");
if (intent.getAction().equals(Constants.ACTION_START_LOGIN)){
String oracle = intent.getStringExtra(Constants.ORACLE);
String password = intent.getStringExtra(Constants.PASSWORD);
loginFirebaseHelper.startLoginFB(oracle, password);
}
}}
我提供了 LoginFirebaseHelper: LoginNetworkBuilderModule.class:
@LoginScope
@Provides
static LoginFirebaseHelper provideLoginFirebaseHelper(Application application, DatabaseReference databaseReference, FirebaseAuth firebaseAuth){
return new LoginFirebaseHelper(application, databaseReference, firebaseAuth);
}
当我在@Singlton 上的应用程序顶层贡献 Loginservice 时,代码工作正常(当我在 AppModule 上提供 LoginFirebaseHelper 并通过 LoginNetworkBuilderModule.lass 将 Loginservice 贡献给 App 组件时) 但是当我使用上面的代码时,我得到了下一个哈巴狗
Caused by: java.lang.IllegalArgumentException: No injector factory bound for Class<....core.network.service.LoginService>
【问题讨论】:
标签: android dependency-injection dagger-2 android-mvvm