我正在尝试使用新的匕首api进行活动注射,但我收到错误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
}
}
活动模块文件
@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)
}
}
在模块和组件的挂钩中还有什么我想念的吗?
这应该是“有趣的注入(应用程序:应用程序)”
有趣注入(app:App)
我认为你使用错误版本的AndroidInjection
和AndroidSupportInjectionModule
。
尝试用AndroidSupportInjectionModule::class
替换AndroidInjectionModule::class
。