Dagger 2 /在非活动类中插入上下文

问题描述 投票:0回答:1

我希望能对以下问题有所帮助;我已经研究了一段时间,但不幸的是,我未能找到可以真正帮助我的东西。

我的目标是将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

非常欢迎任何帮助。

提前感谢。

我希望能对以下问题有所帮助;我已经研究了很长时间,但不幸的是,我未能找到能够真正帮助我的东西。我的目标是...

android kotlin dependency-injection dagger-2
1个回答
0
投票

您的FirstRep类应类似于以下内容:

© www.soinside.com 2019 - 2024. All rights reserved.