groovy
implementation 'com.google.dagger:dagger:2.x'
annotationProcessor 'com.google.dagger:dagger-compiler:2.x'
implementation 'com.google.dagger:dagger-android:2.x'
implementation 'com.google.dagger:dagger-android-support:2.x'
annotationProcessor 'com.google.dagger:dagger-android-processor:2.x'
kotlin
@ApplicationScope
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {
fun inject(application: MyApplication)
}
@Module
class ApplicationModule(private val application: MyApplication) {
@Provides
fun provideContext(): Context {
return application
}
}
class MyApplication : Application() {
lateinit var applicationComponent: ApplicationComponent
override fun onCreate() {
super.onCreate()
applicationComponent = DaggerApplicationComponent.builder()
.applicationModule(ApplicationModule(this))
.build()
applicationComponent.inject(this)
}
}
kotlin
class MainActivity : AppCompatActivity() {
@Inject
lateinit var context: Context
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
(application as MyApplication).applicationComponent.inject(this)
Toast.makeText(context, "Hello Dagger", Toast.LENGTH_SHORT).show()
}
}