[英]Trying to pass a function parameter in Kotlin
我有一個功能:
fun test(){
Timber.d("Button Clicked")
}
我正在嘗試將此函數傳遞給片段。 這是我的片段中的那個字段。
class MyFragment(val layout: Int) : Fragment() {
var clickEvent1: (() -> Unit)? = null
}
這就是我在開始片段交易之前設置這個字段的方式。
fragment.clickEvent1 = {test()}
我的目標是在我的片段內單擊按鈕時運行此函數。
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
dialog_option_1.setOnClickListener { clickEvent1 }
}
我這樣做的方式有問題,因為“測試”功能沒有運行。 有人可以指出我正確的方向嗎? 謝謝
用
dialog_option_1.setOnClickListener(clickEvent1)
您需要將 lambda 本身傳遞給方法,因此您應該使用 () 括號而不是 {},這會創建一個新的 lambda,在您的情況下幾乎不執行任何操作。
應該
dialog_option_1.setOnClickListener { clickEvent1() }
如果你想這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.