Hy
Я хотел бы использовать Dagger 2 в своем приложении, но я немного запутался.
В обучающих видео на YouTube я видел реализацию, подобную этой: HasActivityInjector , но я также видел CodeLabs dagger 2 tutorial , и не упоминалось об этом HasActivityInjector, но было внедрение активности.
Итак, эти два похожи , или я что-то не понял?
CodeLabs:
@Component(modules = [StorageModule::class])
interface AppComponent {
...
// Classes that can be injected by this Component
fun inject(activity: RegistrationActivity)
fun inject(activity: MainActivity)
}
class MainActivity : AppCompatActivity() {
...
override fun onCreate(savedInstanceState: Bundle?) {
(application as MyApplication).appComponent.inject(this)
super.onCreate(savedInstanceState)
...
}
}
Other implementation:
class SampleApplication : Application(), HasActivityInjector {
@Inject
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>
override fun onCreate() {
super.onCreate()
DaggerApplicationComponent.builder()
.applicationBind(this)
.build()
.inject(this)
}
override fun activityInjector(): AndroidInjector<Activity> = dispatchingAndroidInjector
}
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}