Как удалить OnPrimaryClipChangedListener из ClipboardManager в Kotlin?
Я использую следующий код для отслеживания изменений в буфере обмена. Я надеюсь удалить монитор после завершения операции.
Но 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
}
1 ответ
Решение
Чтобы удалить OnPrimaryClipChangedListener, вам нужна ссылка на лямбду, которую вы "установили" ранее. Попробуйте реорганизовать код следующим образом.
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)