我使用以下代码监视剪贴板的更改,希望在完成操作后删除监视器。
但是clipboard.removePrimaryClipChangedListener { }
需要传递参数,我该怎么办?
代码
btnMonitor.setOnClickListener {
val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
clipboard.addPrimaryClipChangedListener {
if (clipboard.hasPrimaryClip() && clipboard.primaryClipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN) ) {
var pasteData: String = ""
val item = clipboard.primaryClip.getItemAt(0)
pasteData = item.text.toString()
toast("Hi - " + pasteData)
}
}
clipboard.removePrimaryClipChangedListener { } //I don't know how to pass paramaters
}
答案 0 :(得分:1)
要remove OnPrimaryClipChangedListener,您需要引用您之前“设置”的lambda。尝试重新组织代码,如下所示。
private val lambda = ClipboardManager.OnPrimaryClipChangedListener {
if (clipboard.hasPrimaryClip() && clipboard.primaryClipDescription.hasMimeType(MIMETYPE_TEXT_PLAIN) ) {
var pasteData: String = ""
val item = clipboard.primaryClip.getItemAt(0)
pasteData = item.text.toString()
toast("Hi - " + pasteData)
}
}
稍后,您可以使用clipboard.addPrimaryClipChangedListener(lambda)
和clipboard.removePrimaryClipChangedListener(lambda)