我正在为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的情况下进行了尝试,结果相同。
答案 0 :(得分:1)
您必须调用您的操作
.setActionClickListener { action() }