如何在 Kotlin 中使用回调? [英] How I can use callback in Kotlin?

查看:91
本文介绍了如何在 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆