В Dagger у вас есть два способа предоставить объект
- Использование @Inject в конструкции
Пример:
UserRepository @Inject конструктор (private val mContext: Context)
- Но как мы можем @Inject конструктор с каким-либо классом сторонних разработчиков, таких как Retrofit Service Interface? Вот почему у Dagger есть @ Provide
Пример:
@Module class AppModule {
@Provides
fun provideContext(application: Application): Context = application.applicationContext }
Кинжал также имеет другой способ предоставить объект
Вы можете прочитать больше здесь
В вашем случае вы можете предоставить свой класс StringPreference в своем модуле приложения, например, AppModule
@Module
class AppModule {
@Provides
fun provideStringPreference(context: Context): StringPreference = StringPreference(context)
}