This repository shows how to set up an Android project using Dagger.
- Default dependency injection (DI) setup
checkout master
- DI setup with ViewModel
checkout branch dagger-view-model
- DI setup with networking and Retrofit
checkout branch dagger-retrofit
- DI setup with WorkManager
checkout branch dagger-work-manager
- Add an activity, implements
HasSupportFragmentInjector
class MainActivity : AppCompatActivity(), HasSupportFragmentInjector {
@Inject
lateinit var repository: SampleRepository
@Inject
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Fragment>
override fun supportFragmentInjector() = dispatchingAndroidInjector
}
- Register the activity to AndroidInjector in
ActivityModule
@ContributesAndroidInjector(modules = [FragmentBuildersModule::class])
abstract fun contributeMainActivity(): MainActivity
- Add a fragment, implements
Injectable
class MainFragment : Fragment(), Injectable {
}
- Register the fragment in
FragmentBuildersModule
@ContributesAndroidInjector
abstract fun contributeMainFragment(): MainFragment
This project is extracted and modified from GithubBrowserSample.