android - 如何使用 Kotlin 设置 OnEditorActionListener

所以我有这个 Java 代码:

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            doSomething();
            return true;
        }
        return false;
    }
});

我设法得到了这个(我什至不确定这是正确的方法):

editText.setOnEditorActionListener() { v, actionId, event ->
      if(actionId == EditorInfo.IME_ACTION_DONE){
          doSomething()
      } else {
      }
}

但是我得到一个错误 Error:(26, 8) Type mismatch: inferred type is kotlin.Unit but kotlin.Boolean is expected

那么这样的事件处理程序是如何用 Kotlin 编写的呢?

最佳答案

onEditorAction返回 Boolean 而您的 Kotlin lambda 返回 Unit。将其更改为即:

editText.setOnEditorActionListener { v, actionId, event ->
      if(actionId == EditorInfo.IME_ACTION_DONE){
          doSomething()
          true
      } else {
          false
      }
}

The documentation关于 lambda 表达式和匿名函数是一本不错的读物。

https://stackoverflow.com/questions/37201504/

相关文章:

regex - 使用正则表达式在 Kotlin 中进行 URL 解析

java - 如何从 Kotlin/Java 中运行 Kotlin-Script (.kts) 文件

java - Gradle 项目 : java. lang.NoClassDefFoundError

java - Kotlin 数据类实现 Java 接口(interface)

android - 更新到 AS 3.0 Canary 6 后 transformClassesWi

kotlin - 在 Kotlin 中带有参数的单例

kotlin - Kotlin 中的静态数据

android - 监听器绑定(bind);找不到二传手

arrays - Kotlin 中的二维 Int 数组

kotlin - Kotlin 是 "pass-by-value"还是 "pass-by-refer