gpt4 book ai didi

android - Kotlin如何实现android setOnClickListener之类的语法

转载 作者:行者123 更新时间:2023-12-02 16:45:41 35 4
gpt4 key购买 nike

Android+Kotlin 中,以下两种语法均有效

view.setOnClickListener(this)view.setOnClickListener {} 我一直在尝试为我的自定义功能界面实现此语法,但没有成功。这是我到目前为止所尝试过的

interface OnClickListener {
fun onClick(str: String)
}

class Test {
fun setClickListener(listener: OnClickListener) {
listener.onClick("")
}
}

fun main() {
val test = Test()
test.setClickListener { str ->

}
}

上面 main() 中的代码 fragment 无法编译,因为它需要 OnClickListener 类的匿名对象。如何为客户端代码实现与原始 OnClickListener 相同的语法?

最佳答案

如果您仅使用 Kotlin,这是不可能的。您可以使用JAVA的@FunctionalInterface来实现这一点。无论看起来多么不一致,这都是语言设计的。

It seems that SAM conversion only works for Java interfaces. According to the forum discussion this is by design: Kotlin has functional types and everyone should just use them. While the argument is perfectly reasonable the restriction does feel a bit inconsistent.

请检查此link

关于android - Kotlin如何实现android setOnClickListener之类的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58302456/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com