Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Koltin函数引用:此表达式未使用_Android_Kotlin - Fatal编程技术网

Android Koltin函数引用:此表达式未使用

Android Koltin函数引用:此表达式未使用,android,kotlin,Android,Kotlin,当我按如下方式使用Kotlin函数表达式时,我从编译器中得到一个警告,表示该表达式未使用 val button: Button by lazy{findViewById(R.id.button)} nextButton.setOnClickListener { viewModel::callFoo } 当我从lambda中调用实际函数时,警告消失了 val button: Button by lazy{findViewById(R.id.butt

当我按如下方式使用Kotlin函数表达式时,我从编译器中得到一个警告,表示该表达式未使用

        val button: Button by lazy{findViewById(R.id.button)}
        nextButton.setOnClickListener { viewModel::callFoo }
当我从lambda中调用实际函数时,警告消失了

        val button: Button by lazy{findViewById(R.id.button)}
        nextButton.setOnClickListener { viewModel.callFoo() }

查看文档中的函数引用并不能真正说明这一点。

编译器是正确的,您的第一个代码没有任何作用。您可以自己检查,不会调用
callFoo()

这段代码就像是说:“单击时,运行我的lambda
{viewModel::callFoo}
,它实际上什么都不做”。它只获取一个函数引用,不做任何事情。您的意思是将函数引用传递给
setOnClickListener()
,而不是lambda:

nextButton.setOnClickListener(viewModel::callFoo)