我试图显示我的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
}