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

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

这是我的函数声明,

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);
  }
android kotlin dialog onclicklistener function-parameter
1个回答
0
投票

您需要实现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())
© www.soinside.com 2019 - 2024. All rights reserved.