如何在Kotlin中使用回调? [英] How I can use callback in Kotlin?
问题描述
我有一个View和一个CircleShape,它应该在此View中显示吐司.我在主要活动中使用它. 这是我的界面
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中是View),在我的View中是侦听器.我想在我的活动中实现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的getters和setters中,泛型的自动变量是有效的,但是我如何设置监听器是否私有.这是我的活动中的代码,但无效
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中使用Callback 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屋!