我如何在 Kotlin 中使用回调?

新手上路,请多包涵

我有 View 和一个 CircleShape ,它应该在此视图中显示吐司。我在主要活动中使用它。这是我的界面

interface OnClickListenerInterface {
  fun onClick()
}

它是 CircleShape(它是我的 xml 中的视图)和我的视图中的侦听器。我想在我的活动中实现 OnClick。

  var listener: OnClickListenerInterface? = null

 mCircleShape.setOnClickListener(View.OnClickListener {
      if (listener == null) return@OnClickListener
      listener!!.onClick()
    })

我知道,在 Kotlin getters 和 setters 通用自动化中,但如果它是私有的,我如何设置监听器。这是我的活动中的代码,但它不起作用

CircleShape.listener  = object :OnClickListenerInterface{
      override fun onClick() {
        ToastUtils.showSuccessMessage(getContext(),"pressed")
      }
    }

我应该如何在 Kotlin 中使用回调,onClickListenere?

原文由 manwhotrycoding 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 559
1 个回答

使用 lambda 的更简单的解决方案。

CircleShape.kt 中,声明一个 lambda 函数。

 var listener: (()->Unit)? = null
...
// When you want to invoke the listener
listener?.invoke()

在你的活动中

mCircleShape.listener = {
    // Do something when you observed a call
}

原文由 Weidian Huang 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题