繁体   English   中英

尝试在 Kotlin 中传递函数参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM