gpt4 book ai didi

android - 从 Android Dagger 中的依赖模块注入(inject)对象

转载 作者:行者123 更新时间:2023-11-30 00:39:10 25 4
gpt4 key购买 nike

我有两个模块,AppModuleSplashViewModule

对于 AppModule:

@Module
public final class AppModule {
@NonNull
private final MyApplication mApp;

public AppModule(@NonNull MyApplication app) {
mApp = app;
}

@Provides
public Context provideAppContext() {
return mApp;
}

@Provides
public MyApplication provideApp() {
return mApp;
}

@Singleton
@Provides
public UserManager provideUserManager() {
return new UserManager();
}
}

对于 SplashviewModule

@Module
public final class SplashViewModule {

@Inject
UserManager mUserManager;

@Provides
public SplashInteractor provideInteractor() {
return new SplashInteractorImpl(mUserManager);
}

@Provides
public PresenterFactory<SplashPresenter> providePresenterFactory(@NonNull final SplashInteractor interactor) {
return new PresenterFactory<SplashPresenter>() {
@NonNull
@Override
public SplashPresenter create() {
return new SplashPresenterImpl(interactor);
}
};
}
}

然后我像这样将这些注入(inject)到我的 Activity 中:

@Override
protected void setupComponent(@NonNull AppComponent parentComponent) {
DaggerSplashViewComponent.builder()
.appComponent(parentComponent)
.splashViewModule(new SplashViewModule())
.build()
.inject(this);
}

但这行不通。 UserManager 将为空。如何获取 AppModule 创建的 UserManager 单例实例并将其注入(inject) SplashViewModule

最佳答案

您不必在 SplashViewModule 中声明 UserManager mUserManager;。只需为方法 provideInteractor 添加一个 UserManager 参数。

@Provides
public SplashInteractor provideInteractor(UserManager userManager) {
return new SplashInteractorImpl(userManager);
}

关于android - 从 Android Dagger 中的依赖模块注入(inject)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42829370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com