如何在 Kotlin 中使用回调? [英] How I can use callback in Kotlin?
问题描述
我有 View 和一个 CircleShape ,它应该在这个 View 中显示 toast .我在主活动中使用它.这是我的界面
I have View and one CircleShape , which should show toast in this View. And I use it in main Activity. This is my interface
interface OnClickListenerInterface {
fun onClick()
}
它是 CircleShape(它是我的 xml 中的视图)和我的视图中的侦听器.我想在我的活动中实现 OnClick.
It is CircleShape( it is View in my xml) and listener in my View. I want to implement OnClick in my Activity.
var listener: OnClickListenerInterface? = null
mCircleShape.setOnClickListener(View.OnClickListener {
if (listener == null) return@OnClickListener
listener!!.onClick()
})
我知道,在 Kotlin 中的 getter 和 setter 通用自动程序,但是如果它是私有的,我如何设置侦听器.这是来自我的活动的代码,但它不起作用
I know , that in Kotlin getters and setters generic automatics, but how I can set listener if it private. It is code from my Activity, but It doesn't work
CircleShape.listener = object :OnClickListenerInterface{
override fun onClick() {
ToastUtils.showSuccessMessage(getContext(),"pressed")
}
}
我应该如何在 Kotlin 中使用回调、onClickListenere?
How I should to use Callback, onClickListenere in Kotlin?
推荐答案
使用 lambda 的更简单的解决方案.
A more simpler solution by using lambda.
在 CircleShape.kt 中,声明一个 lambda 函数.
Inside CircleShape.kt, declare a lambda function.
var listener: (()->Unit)? = null
...
// When you want to invoke the listener
listener?.invoke()
在您的活动中
mCircleShape.listener = {
// Do something when you observed a call
}
这篇关于如何在 Kotlin 中使用回调?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!