android - 如何使 'this' 成为 Listener 的引用而不是 Kotlin 中的 Activity?

标签 android kotlin

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

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

最佳答案

实现此目的的最简单方法是使用 object 语法而不是 lambda(尽管使用起来有点嘈杂):

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

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

关于android - 如何使 'this' 成为 Listener 的引用而不是 Kotlin 中的 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493031/

相关文章:

interface - 使用在父类(super class)中定义的同名 var 覆盖在接口(interface)中定义的 val

android - 如何解决 "recyclerView must not be null"

android - 如果参数不为 null,我如何告诉 kotlin 函数不返回 null?

android - android底部栏下方的空白空间

android - 赛马林 |安卓|科苏错误

android - 奇怪的 R.java 问题导致可绘制资源未正确加载

android - 检测 WiFi 或移动网络

java - Android Studio 应用程序在手机上运行时出现 NoClassDefFoundError

android - 类型不匹配 : inferred type is Context? 但需要上下文 - Kotlin

java - Gson 使用通用代码将枚举序列化和反序列化为整数