繁体   English   中英

Android Kotlin - 如何将命名的 function 传递给另一个 ZC19C4252674C17A 中的 DialogInterface.OnClickListener 参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM