Intereting Posts
«Ответ уже написан» с помощью Vertx Неразрешенная ссылка: привязка данных Как вводить представления фрагментов, используемых в PagerAdapter с кинжалом? RecyclerView добавляет «пустой» элемент макета, и когда я нажимаю его, приложение падает Несоответствие дженериков Котлина в иерархии классов Как установить статическое свойство в классе в Kotlin для Javascript Как переключить видимость FAB с другим FAB Какой тип языка Котлин? Чистый ООП или функциональный Как исправить подпись обобщенного метода расширения в kotlin для разрешения «Ошибка вывода типа» в kotlin Как отобразить частичный экран камеры в kotlin Android Things: NullPointerException при получении данных через USB UART по малине PI 3 Android Kotlin передает значение с текстовых полей на numberPicker EventBus с Kotlin не работает Умный показ не работает должным образом Как работает синтаксис доступа к свойствам Kotlin для классов Java (например, EditText setText)?

Кинжал + Котлин не вводит

Я изучаю Dagger 2 для DI, и я просто сделал этот код, чтобы внедрить Retrofit:

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)