2

我使用以下代码来监控剪贴板的变化,我希望在我完成操作后移除监控器。

但是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        
     }
4

1 回答 1

3

为了删除 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)稍后您可以使用and添加和删除 lambdaclipboard.removePrimaryClipChangedListener(lambda)

于 2018-11-15T20:27:45.900 回答