Котлин: можем ли мы использовать @Subscribe of EventBus (GreenRobot) в Котлине?
My onEvent в фрагменте, как показано ниже, захватывая аутентификацию действия, в моей функции Kotlin. Тем не менее, я не могу запустить это onEvent.
@Subscribe
fun onEvent(event: AuthenticationEvent) {
if (event.isAuthenticated) {
startFragment(signInFragment, SignInFragment.TAG)
} else {
startFragment(signOutFragment, SignOutFragment.TAG)
}
}
в моей сборке.gradle файл, я должен добавить это
compile 'org.greenrobot:eventbus:3.0.0'
есть все, что мне нужно сделать, чтобы получить этот триггер?
3 ответов
чтобы использовать обработчики аннотаций с Kotlin, вам нужно использовать Kotlin аннотации процессор инструмент (kapt).
добавьте это в ваш build.gradle
:
apply plugin: 'kotlin-kapt'
согласно GreenRobot (и подтверждено моим тестированием), это все, что вам нужно получить @Subscribe
.
- убедитесь, что ваш обработчик событий работает с
@Subscribe
аннотации общественные -
на добавить код:
apply plugin: 'kotlin-kapt' implementation "org.greenrobot:eventbus:3.0.0" kapt 'org.greenrobot:eventbus-annotation-processor:3.0.1'
-
если вы хотите использовать
Subscriber Index
добавить кодbuild.gradle
тоже:kapt { arguments { arg('eventBusIndex', 'your-package.MyEventBusIndex') } }
вы можете использовать Square Отто, который работает таким же образом и отлично работает с Котлином. Хотя, будьте осторожны, поскольку EventBuses склонны к усложнению кода Android,и именно поэтому они устарели в пользу RX.