[英]Android Kotlin - How do i set a default value for DialogInterface.OnClickListener as function parameter?
[英]Android Kotlin - How to pass a named function to DialogInterface.OnClickListener parameter in another function?
这是我的 function 声明,
fun MyDialog(ctx: Context, msg: String, yestext: String = "", OnYes: DialogInterface.OnClickListener? = null): AlertDialog
fun MyClickListener(){}
如何将 MyClickListener 传递给 MyDialog?
MyDialog(context, "Delete data", "Yes", 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 转换提取为适合您用例的 function。
fun MyClickListener() =
DialogInterface.OnClickListener { /* Code */ }
//Now call like this
MyDialog(ctx, "", "", MyClickListener())
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.