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

我的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' 

有什么我需要做得到这个触发器?

要使用Kotlin使用注释处理器,您需要使用Kotlin注释处理器工具(kapt) 。

添加到你的build.gradle

 apply plugin: 'kotlin-kapt' 

根据GreenRobot (并通过我的测试证实),这是所有你需要得到@Subscribe

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

你可以使用Square的Otto ,它的工作方式与Kotlin完全一样。 虽然,因为EventBuses容易过度复杂的Android代码,所以要小心,这就是为什么他们已经不赞成使用Rx的框架。