如何正确使用setOnLongClickListener()与Kotlin

Dyl*_*ett 13 android onlongclicklistener kotlin

我一直在尝试设置长时间点击监听器事件,但不断收到以下错误:

Type mismatch. 

Required:Boolean

Found:Unit
Run Code Online (Sandbox Code Playgroud)

我对这个setOnClickListener 事件没有任何问题,但由于某种原因,我对这个setOnLongClickListener事件没有运气.

我目前正在尝试显示一个简单的Toast:

view.setOnLongClickListener{
    Toast.makeText(this, "Long click detected", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)

我见过很多关于Java的例子,但我还没有找到Kotlin的任何例子.

Sam*_*net 44

OnLongClickListener.onLongClick 签名要求您返回一个布尔值,以通知您是否实际使用了该事件

view.setOnLongClickListener{
     Toast.makeText(this, "Long click detected", Toast.LENGTH_SHORT).show()
     return@setOnLongClickListener true
}
Run Code Online (Sandbox Code Playgroud)

要么

view.setOnLongClickListener{
     Toast.makeText(this, "Long click detected", Toast.LENGTH_SHORT).show()
     true
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案 我们想添加一个想法,当您尝试构建它时,编译器会抱怨如果没有在打开和关闭之间的任何其他代码行之前添加 return 或 true 语句,初学者或新手会相信正在输入的内容错了只是一个想法 (2认同)

小智 7

这也适用于 Kotlin。简单地返回 true

view.setOnLongClickListener {
    Toast.makeText(this,"This is a long click",Toast.LENGTH_SHORT).show(); 
    true
}
Run Code Online (Sandbox Code Playgroud)