Koin how to inject outside of Android activity / appcompatactivity

kosiara - Bartosz Kosarzycki picture kosiara - Bartosz Kosarzycki · Apr 3, 2018 · Viewed 11.2k times · Source

Koin is a new, lightweight library for DI and can be used in Android as well as in standalone kotlin apps.

Usually you inject dependencies like this:

class SplashScreenActivity : Activity() {

    val sampleClass : SampleClass by inject()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

with the inject() method.

But what about injecting stuff in places where Activity context is not available i.e. outside of an Activity?

Answer

There is the KoinComponent which comes to the rescue. In any class you can simply:

class SampleClass : KoinComponent {

    val a : A? by inject()
    val b : B? by inject()
}

Extending KoinComponent gives you access to inject() method.

Remember that usually it's enough to inject stuff the usual way:

class SampleClass(val a : A?, val b: B?)