Android Kotlin語言使用EventBus

廢話不多說,直接上代碼

  • 首先放入依賴
 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傳值了
如果有看不懂的請評論

又發現了一個問題
【是在發送粘性消息的時候不需要再本頁面註冊,這樣就可以不寫接收消息的方法了】
【發送非粘性消息的時候需要註冊】


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章