这是我的函数声明,
fun MyDialog(ctx: Context, msg: String, yestext: String = "", OnYes: DialogInterface.OnClickListener? = null): AlertDialog
fun MyClickListener(){}
如何将MyClickListener传递给MyDialog?
MyDialog(上下文,“删除数据”,“是”,MyClickListener)显示类型不匹配。
在DialogInterface.class中
public interface OnClickListener {
void onClick(DialogInterface var1, int var2);
}
您需要实现DialogInterface.OnClickListener
才能将其传递给它。
赞:
class MyClickListener : DialogInterface.OnClickListener {
override fun onClick(var1: DialogInterface, var2: Int) {/* Code */}
}
// then call the constructor.
MyDialog(ctx, "", "", MyClickListener())
但是确实这不是最干净的方法。就像Java一样,您可以在Kotlin 1.4。
中进行SAM转换。// inline implementation of DialogInterface.OnClickListener using SAM conversion
MyDialog(ctx, "", "") {/* Code */}
并且如果愿意,可以将SAM转换提取到适合您的用例的函数中。
fun MyClickListener() =
DialogInterface.OnClickListener { /* Code */ }
//Now call like this
MyDialog(ctx, "", "", MyClickListener())