Android移動開發,接口回調

開發中總會遇到一些這樣的情況,當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")之後,就會執行以下代碼,而且可以傳數據過來
            }  
        })
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章