Котлин: можем ли мы использовать @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.


  1. убедитесь, что ваш обработчик событий работает с @Subscribe аннотации общественные
  2. на добавить код:

    apply plugin: 'kotlin-kapt'
    
    implementation "org.greenrobot:eventbus:3.0.0"
    kapt 'org.greenrobot:eventbus-annotation-processor:3.0.1'
    
  3. если вы хотите использовать Subscriber Index добавить код build.gradle тоже:

    kapt { arguments { arg('eventBusIndex', 'your-package.MyEventBusIndex') } }


вы можете использовать Square Отто, который работает таким же образом и отлично работает с Котлином. Хотя, будьте осторожны, поскольку EventBuses склонны к усложнению кода Android,и именно поэтому они устарели в пользу RX.