作者:serafina捡到一枚人鱼 | 来源:互联网 | 2023-02-04 14:13
1> azizbekian..:
正如dagger android文档中指定的那样:
专业提示:如果您的子组件及其构建器没有其他方法或超类型,而不是步骤#2中提到的方法或超类型,您可以使用@ContributesAndroidInjector为您生成它们.而不是第2步和第3步,添加一个返回活动的抽象模块方法,使用@ContributesAndroidInjector对其进行注释,并指定要安装到子组件中的模块.如果子组件需要范围,则还要将范围注释应用于该方法.
因此,我们可以摆脱LoginSubcomponent
并执行以下更改ActivityBindingModule
:
@Module
public abstract class ActivityBindingModule {
@ActivityScope
@ContributesAndroidInjector(modules = LoginActivityModule.class)
abstract LoginActivity loginActivity();
}
LoginActivityModule.java
@Module
abstract class LoginActivityModule {
@Binds
abstract Activity bindActivity(LoginActivity activity);
@Provides
@ActivityScope
static ViewUtils viewUtils(Activity activity) {
return new ViewUtils(activity);
}
}
您的自定义应用类:
public class MyApp extends DaggerApplication {
@Inject
DispatchingAndroidInjector dispatchingActivityInjector;
@Override
protected AndroidInjector applicationInjector() {
return DaggerAppComponent.builder().create(this);
}
}