匕首+ Kotlin不注射

我学习DI的Dagger 2,我只是做了这个代码注入改造:

NetModule.kt

@Module class AppModule(val mApplication: Application) { @Provides @Singleton fun provideApplication() : Application{ return mApplication } } 

AppModule.kt

 @Module class AppModule(val mApplication: Application) { @Provides @Singleton fun provideApplication() : Application{ return mApplication } } 

NetComponent.kt:

 @Singleton @Component(modules = arrayOf(AppModule::class, NetModule::class)) interface NetComponent { fun inject(activity: Activity) } 

CustomApplication.kt

 class CustomApplication : Application() { companion object { lateinit var mNetComponent: NetComponent } override fun onCreate() { super.onCreate() AndroidThreeTen.init(this) mNetComponent = DaggerNetComponent.builder() .appModule(AppModule(this)) .netModule(NetModule(getString(R.string.api_base_url))) .build() } } 

然后在我的活动中:

 class TrashCansInfoActivity : AppCompatActivity(){ @Inject lateinit var mRetrofit: Retrofit override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_trash_cans_info) CustomApplication.mNetComponent.inject(this) setSupportActionBar(toolbar) populateTrashCanList() } private fun populateTrashCanList(){ showProgress(true) mRetrofit.create(ApiClient::class.java) .getTrashCans() .map { it.map { it.toTrashCan() } } .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .doOnError { showProgress(false) Toast.makeText(this, "Erro ao carregar lista de lixeiras", Toast.LENGTH_SHORT).show() }.doOnCompleted { showProgress(false) } .subscribe(behaviorSubject) } } 

所以,这个代码应该工作,对吧? 应该添加依赖项…但是当我运行我的应用程序…我得到这个:

 kotlin.UninitializedPropertyAccessException: lateinit property mRetrofit has not been initialized 

所以改造没有被注入。 我错过了什么?

任何帮助,欢迎!

 fun inject(activity: Activity) 

应该

 fun inject(activity: TrashCansInfoActivity)