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
。
- 确保使用
@Subscribe
注释的事件处理函数是公共的 -
在
build.gradle
文件中添加代码: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的Otto ,它的工作方式与Kotlin完全一样。 虽然,因为EventBuses容易过度复杂的Android代码,所以要小心,这就是为什么他们已经不赞成使用Rx的框架。