java - 修改匿名函数以在 Kotlin 中调用另一个匿名函数

标签 java android functional-programming kotlin higher-order-functions

我的代码中几乎没有点击监听器,如下所示:

tvLogin.setOnClickListener {
    hideKeyBoard(it)
    login()
}

tvForgotPassword.setOnClickListener {
    hideKeyBoard(it)
    navigateToForgetPassword()
}

我想修改传递的代码块以始终调用 hideKeyBoard(view) 然后调用我的函数。

有没有办法创建一个高阶函数来修改代码块并调用传递的函数?

我试过如下的方法:

val clickListener: (View,()->Unit) -> Unit 

但不确定它是如何工作的。

任何人都可以帮助实现吗?

最佳答案

我不确定我是否完全理解你的意思,但也许是这样的:

fun addCallTo(lambda: (View) -> Unit): (View) -> Unit {
  return { 
    hideKeyboard(it)
    lambda(it)
  }
}

// usage:
tvLogin.setOnClickListener(addCallTo { view -> login() })

关于java - 修改匿名函数以在 Kotlin 中调用另一个匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50693148/

相关文章:

android - Google 身份一键式登录异常 : Caller has been temporarily blacklisted due to too many canceled sign-in prompts

functional-programming - 纯函数可以在同一个类中使用私有(private)常量变量吗?

go - 如何将接口(interface)方法传递给函数?

scala - 如何在Either中累积错误?

java - 无法将 getString 用于 textView - android

java - 了解 Twitter API

java - Maven 依赖错误 : missing artifact

java - Spring 4 Web服务HTTP 500 - IllegalStateException : The mapped controller method class is not an instance of the actual controller bean

php - 如何使用 php 主机/服务器在两个 android 设备之间部署连接

Android EditText 替代品