Lambda 作为 Android onClicklistener 中的函数参数

RVB84

我正在为我的 Android 应用程序(API 29)构建自定义样式的 Snackbar 消息(https://github.com/Pradyuman7/ChocoBar),我想通过在 MainActivity 中使用 1 个全局函数来调用它。在我的全局函数下面:

fun showStyledSnackbarMessage(view: View, msg: String, msgAction: String, durationMs: Int,  icon: Int, action: (() -> Unit)) {

     ChocoBar.builder()
                    .setView(view)                    
                    .setText(msg)
                    .setActionText(msgAction)
                    .setDuration(durationMs)
                    .setIcon(icon)
                    .setActionClickListener { action } // the code to execute
                    .build()
                    .show()
}

我的函数将 lambda 作为最后一个参数('action')。Android Studio 告诉我未使用的 'action' 参数。.setActionClickListener 定义如下:

public Builder setActionClickListener(View.OnClickListener listener) {
            this.actionClickListener = listener;
            return this;

我不明白为什么我的 lambda 不工作。当我点击小吃店的操作按钮时,什么也没有发生。如果我在没有全局函数的情况下使用此代码,则 onClickListener 确实有效。

已经使用匿名类在没有 lambda 的情况下尝试过,结果相同。

安德烈·塔纳纳

你必须调用你的动作

.setActionClickListener { action() }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Lambda函数作为参数传递

来自分类Dev

获取作为函数传递的Lambda中的参数的引用

来自分类Dev

Python 使用 ndarray 中的每个元素作为 lambda 函数的参数

来自分类Dev

Android中的OnClickListener界面

来自分类Dev

Dialog Android中的OnclickListener

来自分类Dev

Android中的OnClickListener界面

来自分类Dev

OnClickListener中的Android URI

来自分类Dev

Dialog Android中的OnclickListener

来自分类Dev

将函数作为参数传递(Lambda)

来自分类Dev

Python,lambda函数作为groupby的参数

来自分类Dev

将lambda函数作为HOF的参数传递

来自分类Dev

将 OrderBy lambda 函数作为参数传递

来自分类Dev

传递lambda作为参数

来自分类Dev

Lambda作为模板参数

来自分类Dev

传递lambda作为参数

来自分类常见问题

XML中的Android onClick与OnClickListener

来自分类Dev

非捕获lambda和函数指针作为重载函数歧义中的参数

来自分类Dev

接受lambda函数和函数指针作为参数

来自分类Dev

Lambda多行作为Thread参数?

来自分类Dev

使用Lambda作为If语句的参数

来自分类Dev

Lambda作为默认参数失败

来自分类Dev

lambda作为实例函数指针

来自分类Dev

Lambda函数作为类成员

来自分类Dev

以lambda表达式作为参数的存储库中的Moq函数

来自分类Dev

在Pandas Dataframe中,Groupby.agg()组合多个列作为lambda函数的参数

来自分类Dev

将lambda函数作为参数传递给需要接口的方法

来自分类Dev

接受lambda作为函数参数并提取返回类型

来自分类Dev

将lambda表达式作为函数参数传递

来自分类Dev

Lambda作为成员函数模板的默认参数