我有一个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
}

10-04 23:10