抽象乐趣调用()未实现
Abstract fun invoke() not implemented
我创建了一个视图,但我的 Buttons ClickListener 界面遇到了问题。
界面看起来像这样
interface CustomButtonsClickListener : () -> Unit {
fun onPlusClick(view: View, button: ImageButton)
fun onMinusClick(view: View, button: ImageButton)
}
通过方法实现:
fun setCustomButtonsClickListeners(clickListener: CustomButtonsClickListener) {
binding.addButton.setOnClickListener {
clickListener.onPlusClick(this, binding.addButton)
}
binding.minusButton.setOnClickListener {
clickListener.onMinusClick(this, binding.minusButton)
}
}
这是“外面”的样子
view.setCustomButtonsClickListeners(object : CustomButtonsClickListener {
override fun onPlusClick(view: View, button: ImageButton) {
}
override fun onMinusClick(view: View, button: ImageButton) {
}
})
问题:
我在 object
上收到错误消息:
Object is not abstract and does not implement abstract member public abstract fun invoke()...
方法是什么invoke()
,应该如何实现?我宁愿在视图中执行此操作 class,这样我就不必在应用程序中的某处使用视图时执行此操作。
这看起来像是对语法的混淆。该行:
interface CustomButtonsClickListener : () -> Unit {
创建一个扩展 () -> Unit
的接口(并继续向其添加两个方法)。
() -> Unit
是一种不带参数的函数类型,returns 没有任何用处。您通常不需要知道该函数的名称(因为 lambda 语法隐藏了它),但这是您发现它被称为... invoke()
!
的极端情况之一
(在the documentation中有描述)
所以你用三个方法定义了一个接口:一个继承自父接口,另外两个在这里声明。
当然,当您尝试实现接口但只实现这三个方法中的两个时,编译器会抱怨您忘记了第三个。
我猜你只是想要一个只有你的两个新方法的接口,所以你可以简单地声明它:
interface CustomButtonsClickListener {
我创建了一个视图,但我的 Buttons ClickListener 界面遇到了问题。 界面看起来像这样
interface CustomButtonsClickListener : () -> Unit {
fun onPlusClick(view: View, button: ImageButton)
fun onMinusClick(view: View, button: ImageButton)
}
通过方法实现:
fun setCustomButtonsClickListeners(clickListener: CustomButtonsClickListener) {
binding.addButton.setOnClickListener {
clickListener.onPlusClick(this, binding.addButton)
}
binding.minusButton.setOnClickListener {
clickListener.onMinusClick(this, binding.minusButton)
}
}
这是“外面”的样子
view.setCustomButtonsClickListeners(object : CustomButtonsClickListener {
override fun onPlusClick(view: View, button: ImageButton) {
}
override fun onMinusClick(view: View, button: ImageButton) {
}
})
问题:
我在 object
上收到错误消息:
Object is not abstract and does not implement abstract member public abstract fun invoke()...
方法是什么invoke()
,应该如何实现?我宁愿在视图中执行此操作 class,这样我就不必在应用程序中的某处使用视图时执行此操作。
这看起来像是对语法的混淆。该行:
interface CustomButtonsClickListener : () -> Unit {
创建一个扩展 () -> Unit
的接口(并继续向其添加两个方法)。
() -> Unit
是一种不带参数的函数类型,returns 没有任何用处。您通常不需要知道该函数的名称(因为 lambda 语法隐藏了它),但这是您发现它被称为... invoke()
!
(在the documentation中有描述)
所以你用三个方法定义了一个接口:一个继承自父接口,另外两个在这里声明。
当然,当您尝试实现接口但只实现这三个方法中的两个时,编译器会抱怨您忘记了第三个。
我猜你只是想要一个只有你的两个新方法的接口,所以你可以简单地声明它:
interface CustomButtonsClickListener {