网站开发可选的方案有,导航栏宽度wordpress,阿里云win服务器怎么做网站,中石化建设工程有限公司网站文章目录 Android Kotlin版封装EventBus代码封装添加依赖库定义消息类定义常量值定义注解定义工具类 使用在Activity中在Fragment中发送事件 源码下载 Android Kotlin版封装EventBus
代码封装
添加依赖库
implementation(org.greenrobot:eventbus:3.3.1)定义消息… 文章目录 Android Kotlin版封装EventBus代码封装添加依赖库定义消息类定义常量值定义注解定义工具类 使用在Activity中在Fragment中发送事件 源码下载 Android Kotlin版封装EventBus
代码封装
添加依赖库
implementation(org.greenrobot:eventbus:3.3.1)定义消息类
class MessageEventT {var code: Intvar data: T? nullconstructor(code: Int) {this.code code}constructor(code: Int, data: T) {this.code codethis.data data}
}定义常量值
object MessageEventCode {const val REFRESH 0xB001 //刷新const val DELETE 0xB002 //删除const val ADD 0xB003 //增加
}定义注解
Target(AnnotationTarget.TYPE, AnnotationTarget.CLASS)
Retention(AnnotationRetention.RUNTIME)
annotation class BindEventBus定义工具类
object EventBusUtils {/*** 注册*/fun register(subscriber: Any) {EventBus.getDefault().register(subscriber)}/*** 取消注册*/fun unregister(subscriber: Any) {EventBus.getDefault().unregister(subscriber)}/*** 发送普通事件*/fun post(event: MessageEvent*) {EventBus.getDefault().post(event)}/*** 发送粘性事件*/fun postSticky(event: MessageEvent*) {EventBus.getDefault().postSticky(event)}/*** 判断是否注册Eventbus*/fun isRegister(clz: Any): Boolean {return clz.javaClass.isAnnotationPresent(BindEventBus::class.java)}
}使用
在Activity中
override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_event_bus)if (EventBusUtils.isRegister(this)) {EventBusUtils.register(this)}
}Subscribe(threadMode ThreadMode.MAIN)
fun onMessageEvent(event: MessageEvent*) {when (event.code) {MessageEventCode.REFRESH - {tvMessage.text 刷新数据}MessageEventCode.DELETE - {tvMessage.text 删除数据}MessageEventCode.ADD - {tvMessage.text 添加数据${event.data}}}
}override fun onDestroy() {super.onDestroy()if (EventBusUtils.isRegister(this)) {EventBusUtils.unregister(this)}
}在Fragment中
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)if (EventBusUtils.isRegister(this)) {EventBusUtils.register(this)}
}Subscribe(threadMode ThreadMode.MAIN)
fun onMessageEvent(event: MessageEvent*) {when (event.code) {MessageEventCode.REFRESH - {tvMessage.text 刷新数据}MessageEventCode.DELETE - {tvMessage.text 删除数据}MessageEventCode.ADD - {tvMessage.text 添加数据${event.data}}}
}override fun onDestroyView() {super.onDestroyView()if (EventBusUtils.isRegister(this)) {EventBusUtils.unregister(this)}
}发送事件
EventBusUtils.post(MessageEventNothing(MessageEventCode.REFRESH))EventBusUtils.post(MessageEventNothing(MessageEventCode.DELETE))EventBusUtils.post(MessageEvent(MessageEventCode.ADD, hello world))源码下载