Dagger2 вводит презентатора в ошибку активности Kotlin

Я использую dragger2 для ввода презентатора в действие Kotlin, ведущий имеет значение null, вот мой код:

class CategoryDetailActivity : MvpActivity<ProductFilterView,ProductFilterPresenter>(), ProductFilterView { private lateinit var presenter: ProductFilterPresenter @Inject set override fun onCreate(savedInstanceState: Bundle?) { initialInjector() super.onCreate(savedInstanceState) setContentView(R.layout.activity_category_detail) initData() initEvent() } private fun initialInjector() { DaggerProductFilterComponent.builder() .applicationComponent(applicationComponent) .productFilterModule(ProductFilterModule()) .build() .inject(this) } override fun getPresenter(): ProductFilterPresenter { return presenter!! } 

}

Метод getPresenter () вызывается в onCreate () MvpActivity, а MvpActivity – это класс java. Первоначально презентатору нужно, чтобы какой-то экземпляр предоставил ProductFilterModule, может быть, презентатор должен быть начальным после ввода Компонента, я думаю. когда я запускаю, он бросает KotlinNullPointerException, ведущий – Null.

 time: FATAL EXCEPTION: main Process: com.chiquedoll.chiquedoll, PID: 10617 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.chiquedoll.chiquedoll/com.chiquedoll.chiquedoll.view.activity.CategoryDetailActivity}: kotlin.KotlinNullPointerException at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) Caused by: kotlin.KotlinNullPointerException at com.chiquedoll.chiquedoll.view.activity.CategoryDetailActivity.getPresenter(CategoryDetailActivity.kt:281) at com.chiquedoll.chiquedoll.view.activity.CategoryDetailActivity.getPresenter(CategoryDetailActivity.kt:36) at com.chiquedoll.chiquedoll.view.activity.MvpActivity.onCreate(MvpActivity.java:19) at com.chiquedoll.chiquedoll.view.activity.CategoryDetailActivity.onCreate(CategoryDetailActivity.kt:65) at android.app.Activity.performCreate(Activity.java:6237) 

Если я использую java для этого, это не проблема.

Dagger 2 не использует сеттеры для ввода полей, он присваивает значения напрямую. Следовательно, правильная версия:

 @Inject internal lateinit var presenter: ProductFilterPresenter 

Обратите внимание, что Dagger 2 требует, чтобы поля для инъекций были, по крайней мере, internal , private не работали.

Intereting Posts
Как получить доступ к сопутствующему объекту Kotlin в Java? Функциональное программирование: как переносить контекст для цепочки правил проверки Runnable не работает в плавающей панели действий на Android Повторное включение будильника для точного в определенное время работы не работает Ошибка сборки Kotlin в Android Studio Как создать буферы протокола Google и Kotlin с использованием Gradle? Пользовательский Сериализатор Джексона делегирует Джексону сериализацию Ошибка несоответствия типа Котлин при передаче аргументов из терминала как установить текст, фокус, ошибку на editText в android с Kotlin Были отчеты об обработке ошибок в кодеков compileReleaseKotlin не работает с java.lang.ClassNotFoundException: com.sun.tools.javac.util.Context Округление Двое-двух десятичных знаков в Котлине. BigDecimal.doubleValue не существует? Python vars () в Котлине Ошибка при импорте классов кода проекта в android studio 3.0 Закрыть / скрыть Softkey от Android с Kotlin