gpt4 book ai didi

android - 如何在 android java 中使用 Dagger2 将 SharedPreferences 注入(inject) ViewModel

转载 作者:行者123 更新时间:2023-12-05 00:19:11 25 4
gpt4 key购买 nike

我在尝试将 SharedPreference 注入(inject) ViewModel 时遇到问题,我正在使用 Dagger 进行依赖注入(inject)。我将在下面添加代码的主要部分

模块 SharedPreferencesModule.java

@Module
public class SharedPreferencesModule {

private Context context;
public SharedPreferencesModule(Context context) {
this.context = context;
}

@Provides
public SharedPreferences provideSharedPreferences() {
return this.context.getSharedPreferences("login",Context.MODE_PRIVATE);
}

}

子组件如下添加

@DashScope
@ContributesAndroidInjector(
modules = {
DashboardFragmentBuildersModule.class, D
ashboardViewModelsModule.class,
DashboardModule.class,
SharedPreferencesModule.class // Added Newly for injecting
}
)
abstract DashboardActivity contibuteDashboardActivity();

我得到的错误在下面给出

error: @Subcomponent.Factory method is missing parameters for required modules or subcomponents:

我知道 SharedPreferencesModule 中的构造函数导致了错误,并且由于模块是使用 ContributesAndroidInjector 添加的,所以我无法将上下文传递给 SharedPreferencesModule。但我需要它来获得 SharedPreferences

有什么办法可以解决这个问题。

下面给出了我的BaseApplication代码

public class BaseApplication extends DaggerApplication {

@Override
protected AndroidInjector<? extends DaggerApplication> applicationInjector() {
return DaggerAppComponent
.builder()
.application(this)
.build();
}
}

开发引用来自此链接 Youtube Link

任何帮助将不胜感激,因为我花了一整天的时间。

注意:我可以使用任何替代解决方案,但我不能破坏这个项目结构

最佳答案

您的 Dagger 图中已经有两个上下文:ApplicationDashboardActivity。要使用其中之一,只需将其作为依赖项添加到您的 @Provides 方法中。 (如果您使用 DashboardActivity,我建议您先使用 @Binds 方法将其绑定(bind)到 ActivityContext .)

例如,要使用图表中已有的 Application 绑定(bind):

@Module
public class SharedPreferencesModule {

@Provides
public static SharedPreferences provideSharedPreferences(Application application) {
return application.getSharedPreferences("login",Context.MODE_PRIVATE);
}

}

关于android - 如何在 android java 中使用 Dagger2 将 SharedPreferences 注入(inject) ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63724777/

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