这些语法在Android studio建议中是什么意思?

这些语法在Android studio建议中是什么意思?,android,Android,这是什么意思。 第二个我知道,它期待一个View.OnclickListner。l:什么意思 还有l:((视图!)->Unit)呢?这意味着是一个不返回类型的lamda表达式,因此是Unit。您可以将代码放入其中,当用户单击时,这些代码将起作用。例如,您可以编写一个可重用的警报对话框,该对话框作为参数获取一个不返回任何内容的完整函数,您可以重用它。像这样: fun showDialog(context: Context, message:String, retry:() ->Unit){

这是什么意思。 第二个我知道,它期待一个View.OnclickListner。l:什么意思


还有l:((视图!)->Unit)呢?

这意味着是一个不返回类型的lamda表达式,因此是Unit。您可以将代码放入其中,当用户单击时,这些代码将起作用。例如,您可以编写一个可重用的警报对话框,该对话框作为参数获取一个不返回任何内容的完整函数,您可以重用它。像这样:

fun showDialog(context: Context, message:String, retry:() ->Unit){
        val builder = AlertDialog.Builder(context)
        builder.setTitle("Error")
        builder.setMessage(message)
        builder.setPositiveButton("OK"){_,_ ->
            builder.create().dismiss()
        }
        builder.setNeutralButton("Retry"){_,_ ->
            retry()
            builder.create().dismiss()

        }
        builder.create().show()
    }
在你的行为中,你可以这样称呼它:

fun displayView(){
//some code
}

showDialog(context, "Error displaying view", displayView())

这样,当alertDialog显示且用户单击retry时,displayView()函数将是call或作为参数传递的任何其他函数。

这意味着是一个不返回类型的lamda表达式,因此是单位。您可以将代码放入其中,当用户单击时,这些代码将起作用。例如,您可以编写一个可重用的警报对话框,该对话框作为参数获取一个不返回任何内容的完整函数,您可以重用它。像这样:

fun showDialog(context: Context, message:String, retry:() ->Unit){
        val builder = AlertDialog.Builder(context)
        builder.setTitle("Error")
        builder.setMessage(message)
        builder.setPositiveButton("OK"){_,_ ->
            builder.create().dismiss()
        }
        builder.setNeutralButton("Retry"){_,_ ->
            retry()
            builder.create().dismiss()

        }
        builder.create().show()
    }
在你的行为中,你可以这样称呼它:

fun displayView(){
//some code
}

showDialog(context, "Error displaying view", displayView())

这样,当alertDialog显示且用户单击retry时,displayView()函数将是call或作为参数传递的任何其他函数。

使用kotlin时,这意味着建议您使用。如果我们创建一个匿名类,比如OnClickListener。常见的方法是:

view.setOnClickListener(object : View.OnClickListener {
    override fun onClick(v: View?) {
        toast("Hello World")
    }
})
推荐的方法(lambdas)是:


您可以看到第二种方法更简洁。

使用kotlin时,这意味着建议您使用。如果我们创建一个匿名类,比如OnClickListener。常见的方法是:

view.setOnClickListener(object : View.OnClickListener {
    override fun onClick(v: View?) {
        toast("Hello World")
    }
})
推荐的方法(lambdas)是:


您可以看到第二种方法更简洁。

每当一个方法调用包含单个抽象方法(或SAM)的接口实现时,Java/Kotlin都可以用lambda替换该实现。这适用于OP或
setOnClickListener

中的方法。每当一个方法调用包含单个抽象方法(或SAM)的接口实现时,Java/Kotlin都可以用lambda替换该实现。这适用于OP或
setOnClickListener
中的方法