Буду признателен за помощь в решении следующей проблемы; Я проводил исследования в течение достаточно долгого времени, но, к сожалению, я не смог найти то, что действительно могло бы мне помочь.
Моя цель - внедрить applicationContext в класс, который не является Activity, Fragment или BroadcastReceiver.
Следуя руководству по codelab от Google, код, который у меня есть, следующий:
AppComponent.kt
@Singleton
@Component
interface AppComponent {
@Component.Factory
interface Factory {
fun create(@BindsInstance context: Context): AppComponent
}
fun inject(activity: SplashActivity)
fun injectToRep(dependantClass: FirstRep)
}
Теперь я могу добавить контекст к действию, вызвав следующее в методе onCreate () соответствующего действия. Это прекрасно работает.
SplashActivity.kt
...
(application as App).appComponent.inject(this)
...
Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь внедрить контекст в неактивный класс, например, в FirstRep class
FirstRep.kt
@SuppressLint("LogNotTimber")
class FirstRep{
var context: Context? = null
@Inject set
fun logContext(mContext: Context? = context){
Log.i("FirstRepo", "Context is: $mContext")
}
}
Теперь, когда вызывается функция класса FirstRep, контекст равен нулю. Я предполагаю, что это ожидается. Я знаю, что пропускаю этап, на котором фактически происходит инъекция, но я не могу понять, как на самом деле реализовать это. Я читал, что для классов без активности / фрагментов мне нужно реализовать интерфейс, но я не уверен, что это допустимо, так как я не нашел больше сообщений, поддерживающих это.
Использование Кинжал 2.26
Любая помощь приветствуется.
Заранее спасибо.