在什么情况下必须提供侦听器参数?

问题描述 投票:0回答:1

我为按钮编写了两个不同的侦听器:

myButton.setOnClickListener{myOnClick()}
myButton.setOnKeyListener{myOnKeyListener()}

第一个对于编译器是可以的。但是第二个错误。它说期望类型为View!,Int,KeyEvent!的3个参数!

考虑到这些是View类中的侦听器:

public interface OnClickListener {
     void onClick(View v);
}

public interface OnKeyListener {
     boolean onKey(View v, int keyCode, KeyEvent event);
}

关于为什么要在一种情况下要求我提供参数,而在另一种情况下却没有要求我的想法?

android-studio kotlin lambda listener
1个回答
0
投票

这是因为OnClickListener.onClick仅采用一个参数,但OnKeyListener.onKey却采用了三个参数。在Kotlin中,您无需指定单个lambda参数,并且可以使用隐式名称it进行访问。但是,当lambda需要更多参数时,您将无法再使用it来访问它们。这就是为什么您必须明确为其命名的原因。

© www.soinside.com 2019 - 2024. All rights reserved.