我有一个View和一个CircleShape,它应该在此View中显示吐司。我在主要 Activity 中使用它。
这是我的界面
interface OnClickListenerInterface {
fun onClick()
}
它是CircleShape(在我的xml中是View),在我的View中是监听器。我想在我的 Activity 中实现OnClick。
var listener: OnClickListenerInterface? = null
mCircleShape.setOnClickListener(View.OnClickListener {
if (listener == null) return@OnClickListener
listener!!.onClick()
})
我知道,在Kotlin getter和setters通用自动程序中,但是如何设置监听器是否私有(private)。它是我的 Activity 中的代码,但不起作用
CircleShape.listener = object :OnClickListenerInterface{
override fun onClick() {
ToastUtils.showSuccessMessage(getContext(),"pressed")
}
}
我应该如何在Kotlin中使用Callback,onClickListenere?
最佳答案
通过使用lambda,这是一种更简单的解决方案。
在CircleShape.kt中,声明一个lambda函数。
var listener: (()->Unit)? = null
...
// When you want to invoke the listener
listener?.invoke()
在您的 Activity 中
mCircleShape.listener = {
// Do something when you observed a call
}