Поскольку вы уже определили, как получить SharedPreferences из класса DataManagerModule, вы можете просто изменить
internal fun provideClass2(context: Context): Class2 {
...
}
до
internal fun provideClass2(sharedPreferences: SharedPreferences): Class2 {
...
}
Пусть другой класс расширит класс Application и объявит его для AndroidManifest следующим образом:
class App: Application() {
lateinit var dataManagerComponent: DataManagerComponent
override fun onCreate() {
super.onCreate()
dataManagerComponent = DaggerDataManagerComponent.builder()
.dataManagerModule(DataManagerModule(this))
.anotherModule(AnotherModule("config1", 123))
.build()
}
}
Измените ваш компонент, чтобы включить функцию ввода
@Singleton
@Component(modules = arrayOf(DataManagerModule::class,
AnotherModule::class))
interface DataManagerComponent {
fun getDataManager() : DataManager
fun getSharedPreferences() : SharedPreferences
// The activity/fragment you will need the values
fun inject(target: MainActivity)
}
Затем введите его в действие
class MainActivity : AppCompatActivity() {
@Inject lateinit var class2: Class2
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
(application as App).dataManagerComponent.inject(this)
Log.i("CLASS2", class2.toString())
}
}