Kotlin:我们可以在Kotlin中使用EventBus的@Subscribe(GreenRobot)吗?

时间:2016-04-20 12:34:23

标签: android kotlin greenrobot-eventbus

我的onEvent在一个片段中,如下所示,在我的Kotlin函数中捕获活动的身份验证。但是,我无法触发onEvent触发。

@Subscribe
fun onEvent(event: AuthenticationEvent) {
    if (event.isAuthenticated) {
        startFragment(signInFragment, SignInFragment.TAG)
    } else {
        startFragment(signOutFragment, SignOutFragment.TAG)
    }
}

在我的build.gradle文件中,我添加了这个

compile 'org.greenrobot:eventbus:3.0.0'

我有什么需要做的才能获得此触发器吗?

3 个答案:

答案 0 :(得分:3)

要在Kotlin中使用注释处理器,您需要使用Kotlin Annotation Processor tool (kapt)

将此添加到您的build.gradle

apply plugin: 'kotlin-kapt'

According to GreenRobot(并经过我的测试证实),这就是获取@Subscribe所需的一切。

答案 1 :(得分:3)

  1. 确保使用@Subscribe注释的事件处理函数公开
  2. build.gradle文件中添加代码:

    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') } }

答案 2 :(得分:0)

你可以使用Square Otto,它的工作方式与Kotlin完全相同。但是,要小心,因为EventBuses容易使Android代码过于复杂,这就是为什么他们不赞成使用Rx来支持框架的原因。