廢話不多說,直接上代碼
- 首先放入依賴
implementation 'org.greenrobot:eventbus:3.1.1'
第一個頁面是Activity頁面
註冊
(要在onCreate裏面寫入)
if (!EventBus.getDefault().isRegistered(this)) {
EventBus.getDefault().register(this)
} else {
Toast.makeText(this, "請勿重複註冊事件", Toast.LENGTH_SHORT).show()
}
銷燬
EventBus.getDefault().unregister(this)
(有個坑
在發佈消息的頁面必須寫一個接收的方法
不然會報錯
Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.demo.kotlin3.view.LoginActivity and its super classes have no public methods with the @Subscribe annotation
)
// 發佈消息
EventBus.getDefault().postSticky(“發佈消息”)
// 接收消息
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
fun event(eventBusMsg: String) {
Toast.makeText(this,eventBusMsg,Toast.LENGTH_SHORT).show()
}
然後在第二個頁面,我的這個就是Fragment裏面.
(記得要註冊和取消註冊)
// 接收消息
@Subscribe(sticky = true,threadMode = ThreadMode.MAIN)
fun event(eventBusMsg: String) {
Toast.makeText(this,eventBusMsg,Toast.LENGTH_SHORT).show()
}
就這麼多東西 就可以實現EventBus傳值了
如果有看不懂的請評論
又發現了一個問題
【是在發送粘性消息的時候不需要再本頁面註冊,這樣就可以不寫接收消息的方法了】
【發送非粘性消息的時候需要註冊】