開發中總會遇到一些這樣的情況,當A完成某件事或到達某個狀態之後,通知B去做另一事(這樣說可能不準確),就可以利用接口回調來實現
- 創建一個interface和方法
- 註冊事件
- 事件觸發
在A類中,創建一個接口並註冊事件
package com.ydduong.gsa.view
class A {
// 1.回調接口對象
private lateinit var aListener: AListener
/**
* 2.要在B中註冊回調事件的方法
*/
fun setAListener(listener: AListener) {
aListener = listener
}
/**
* 在你需要的方法內觸發回調
*/
fun createString() {
// 確保已經被註冊
if(this::aListener.isInitialized) {
// 如果使用isInitialized,務必添加 implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.71"
// 3.觸發回調
aListener.information("11", "22")
}
}
}
/**
* 回調接口
*/
interface AListener{
fun information(str: String, words: String)
}
在B類中就可進行回調了
package com.ydduong.gsa.view
class B {
private lateinit var a: A
/**
* 4.在B的方法中進行回調
*/
fun selfFun() {
a = A()
a.setAListener(object : AListener {
override fun information(str: String, words: String) {
// 在A類中觸發aListener.information("11", "22")之後,就會執行以下代碼,而且可以傳數據過來
}
})
}
}