Dagger 2 派遣 Android 喷油器
Dagger 2 Dispatching Android Injector
我正在尝试使用新匕首 api 进行 activity 注射,但出现错误 lateinit property dispatchingAndroidInjector has not been initialized
// AppComponent.kt
@Singleton
@Component(modules = [
AndroidSupportInjectionModule::class,
ActivitiesModule::class
])
interface AppComponent {
fun inject(app: Application)
@Component.Builder
interface Builder {
fun build(): AppComponent
@BindsInstance
fun bindApplication(application: Application): Builder
}
}
Activity 模块文件
@Module
abstract class ActivitiesModule {
@ContributesAndroidInjector
abstract fun provideRestaurantMainActivity(): MainActivity
}
在我的 MainActivity 我正在调用注入
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
在我的申请中
class App : Application(), HasActivityInjector{
@Inject
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>
override fun activityInjector(): AndroidInjector<Activity> = dispatchingAndroidInjector
override fun onCreate() {
super.onCreate()
DaggerAppComponent
.builder()
.bindApplication(this)
.build()
.inject(this)
}
}
我在挂钩模块和组件时还有什么遗漏的吗?
这个"fun inject(app: Application)"应该是
有趣的注入(应用程序:应用程序)
我认为您使用了错误版本的 AndroidInjection
和 AndroidSupportInjectionModule
。
尝试更换
AndroidSupportInjectionModule::class
和 AndroidInjectionModule::class
.
我正在尝试使用新匕首 api 进行 activity 注射,但出现错误 lateinit property dispatchingAndroidInjector has not been initialized
// AppComponent.kt
@Singleton
@Component(modules = [
AndroidSupportInjectionModule::class,
ActivitiesModule::class
])
interface AppComponent {
fun inject(app: Application)
@Component.Builder
interface Builder {
fun build(): AppComponent
@BindsInstance
fun bindApplication(application: Application): Builder
}
}
Activity 模块文件
@Module
abstract class ActivitiesModule {
@ContributesAndroidInjector
abstract fun provideRestaurantMainActivity(): MainActivity
}
在我的 MainActivity 我正在调用注入
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
在我的申请中
class App : Application(), HasActivityInjector{
@Inject
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>
override fun activityInjector(): AndroidInjector<Activity> = dispatchingAndroidInjector
override fun onCreate() {
super.onCreate()
DaggerAppComponent
.builder()
.bindApplication(this)
.build()
.inject(this)
}
}
我在挂钩模块和组件时还有什么遗漏的吗?
这个"fun inject(app: Application)"应该是
有趣的注入(应用程序:应用程序)
我认为您使用了错误版本的 AndroidInjection
和 AndroidSupportInjectionModule
。
尝试更换
AndroidSupportInjectionModule::class
和 AndroidInjectionModule::class
.