显示时在SnackBar中立即调用的动作



我试图显示我的SnackBar,但我的动作被调用时立即显示,而不是当按钮被点击。为什么会发生这种情况?

fun showSnackBar(msg:String,btnMsg:String,action:Unit){
SnackBar.make(binding.root,msg,Snackbar.LENGTH_SHORT)
.setAction(btnMsg){
action
}
}.show()

这就是我在调用这个方法时所做的:

showSnackBar("Added","Undo",undoAction())
fun undoAction(){
//here I delete an item from a list
}

你的方法是触发的,因为你正在执行你的方法,并把结果给方法showSnackBar

必须将参数Unit改为Callback

fun showSnackBar(..., onActionClicked: () -> Unit){
snackbar.setAction(btnMsg) { onActionClicked() }
}
showSnackBar("Added", "Undo"){ 
// here I delete an item from a list
}

showSnackBar("Added", "Undo") { undoAction() }
fun undoAction(){
// here I delete an item from a list
}

showSnackBar("Added", "Undo", ::undoAction)
fun undoAction() {
// here I delete an item from a list
}

最新更新