【问题标题】:How to make 'this' a reference of Listener instead of the Activity in Kotlin?如何使“this”成为Listener的引用而不是Kotlin中的Activity?
【发布时间】:2018-01-29 09:50:06
【问题描述】:

我的情况类似于以下示例,当我调用 this 时,它引用的是 Activity 而不是 OnClickListener。有没有办法让它成为听众的参考?

private fun onClick() = View.OnClickListener {
    // How to make 'this' a reference of OnClickListener instead of the Activity
}

【问题讨论】:

  • this 应该已经是周围的接口实现了

标签: android kotlin


【解决方案1】:

实现这一点的最简单方法是使用 object 语法而不是 lambda(尽管使用起来有点吵):

private fun onClick() = object: View.OnClickListener {
    override fun onClick(v: View){
        //this in the context of listener
    }
}

否则,您必须将实现包装到另一个与 lambdas with receiver 一起使用的高阶函数中。我想在这里会有点矫枉过正。

【讨论】:

  • 对象语法工作得非常完美!我知道有一天 lambda 不会出现在我身边……我只是想它会持续更长时间!
猜你喜欢
  • 2020-01-17
  • 1970-01-01
  • 2010-10-13
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2020-05-23
  • 2016-04-06
相关资源
最近更新 更多