Как удалить OnPrimaryClipChangedListener из ClipboardManager в Kotlin? - PullRequest
0 голосов
/ 15 ноября 2018

Я использую следующий код для отслеживания смены буфера обмена, надеюсь удалить монитор после завершения операции.

Но 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 Ответ

0 голосов
/ 15 ноября 2018

Чтобы удалить 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...