gpt4 book ai didi

android - 从一个 Dagger 2 模块如何访问另一个 Dagger 2 模块中提供的 SharedPreferences

转载 作者:搜寻专家 更新时间:2023-11-01 09:26:41 24 4
gpt4 key购买 nike

有一个 dagger2 模块提供的 SharedPreferences,在另一个 dagger2 模块中想使用它,
怎么做?

下面的代码似乎不起作用。

/** 组件 */

@Singleton
@Component(modules = arrayOf(DataManagerModule::class,
AnotherModule::class))
interface DataManagerComponent {
fun getDataManager() : DataManager
fun getSharedPreferences() : SharedPreferences
}

/** 模块1 */

@Module
class DataManagerModule(@ApplicationContext private val appContext: Context) {

@Singleton
@Provides
@ApplicationContext
fun provideApplicationContext(): Context = appContext

@Singleton
@Provides
fun provideSharedPreferences(): SharedPreferences {
return appContext.getSharedPreferences(appContext.packageName,
Context.MODE_PRIVATE)
}
}

/** 模块2 */

@Module
class AnotherModule(private val config1: String?, private val config2: Int?) {

@Provides
@Singleton
internal fun provideClass2(context: Context): Class2 {

if (config2 == null) {

// how to get the preferences???
// getSharedPreferences().edit().getInt(Constants.Settings, -1)

}

return class2(config1, config2, context)
}
}

最佳答案

由于所有这些 Artifact 共享相同的范围,并且组件是使用这两个模块构建的,您应该能够简单地将 SharedPreferences 作为参数添加到 provideClass2()为了在 Class2 的构造中使用它,像这样:

@Provides
@Singleton
internal fun provideClass2(context: Context, prefs: SharedPreferences): Class2 {
...
}

关于android - 从一个 Dagger 2 模块如何访问另一个 Dagger 2 模块中提供的 SharedPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50108369/

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