我希望能对以下问题有所帮助;我已经研究了一段时间,但不幸的是,我未能找到可以真正帮助我的东西。
我的目标是将applicationContext注入到不是Activity,Fragment或BroadcastReceiver的类中。
根据google的codelab-tutorial,以下是我的代码。
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类)时>
FirstRep.kt
@SuppressLint("LogNotTimber") class FirstRep{ var context: Context? = null @Inject set fun logContext(mContext: Context? = context){ Log.i("FirstRepo", "Context is: $mContext") } }
现在,当调用FirstRep类的函数时,上下文为null。我想这是预期的。我知道我错过了实际进行注入的步骤,但是我不知道如何实际实现这一点。我已经读过,对于非活动性/片段类,我必须实现一个接口,但是我不确定这是否有效,因为我还没有发现任何支持该类的帖子。
使用匕首2.26
非常欢迎任何帮助。
提前感谢。
我希望能对以下问题有所帮助;我已经研究了很长时间,但不幸的是,我未能找到能够真正帮助我的东西。我的目标是...
您的FirstRep类应类似于以下内容: