剪贴板不更新剪辑

Clipboard doesnt update clip

一开始它可以工作,但是当我复制新元素时它不会更新剪辑。

而且我发现它甚至没有在监听器中执行任何操作。

代码:

class EditNoteFragment : Fragment() {

lateinit var vm : ViewModel
lateinit var titleEditText: EditText
lateinit var textEditText: EditText
lateinit var paste_text: CharSequence
 var is_clip_empty: Boolean =true

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
  var view= inflater.inflate(R.layout.fragment_edit_note, container, false)

    vm =  ViewModelProvider(activity!!).get(EditNoteFragmentViewModel::class.java)
    titleEditText = view.findViewById(R.id.edit_note_title)
    textEditText =view.findViewById(R.id.edit_note_text)

    var clipboard: ClipboardManager = context?.getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager
    var clip : ClipData? = clipboard.primaryClip

    if(clip==null){
        println("Empty clipboard")
        paste_text=""
        is_clip_empty=true
    }else{
       paste_text= clip.getItemAt(0).text
        is_clip_empty=false

    }
    paste_btn_behavior(view)



    view.edit_note_save_btn.setOnClickListener {
        (vm as EditNoteFragmentViewModel).addNotes(activity as MainActivity,titleEditText.text.toString(),textEditText.text.toString())
    }

    view.edit_note_paste_btn.setOnClickListener {
        var newText : String=""
        if(textEditText.isFocused){
             newText= textEditText.text.append(paste_text).toString()
            textEditText.setText(newText)
        }

        if(titleEditText.isFocused){
            newText= titleEditText.text.append(paste_text).toString()
            titleEditText.setText(newText)
        }


    }


    ClipboardManager.OnPrimaryClipChangedListener {

        /**
         * Post here same code as above with clip .
         *
         * Problem : When i copy another text it doesn't switch data
         *
         * Same problem occurs in non-virtual phone.
         */

        clip = clipboard.primaryClip

        if(clip==null){
            println("Empty clipboard")
            paste_text=""
            is_clip_empty=true
        }else{
            paste_text= clip!!.getItemAt(0).text
            is_clip_empty=false

        }

        paste_btn_behavior(view)
    }

    return view
}

private fun paste_btn_behavior(view: View) {
    //Leave it on observables becouse it can change

    if(is_clip_empty==false){
        view.edit_note_paste_btn.alpha=1f
        //active colors
    }else{
        //passive colors
        view.edit_note_paste_btn.alpha=0.7f
    }
}


}

例如我会在程序开始之前复制一个词:Hola

并粘贴它有效,但是当我尝试复制例如字母“H”或任何东西时 它只是不更新​​剪辑,而是粘贴旧剪辑。我以为是关于项目索引的,但我不确定。

问题是 ClipboardManager 上的侦听器。 我应该这样设置

var clipboard: ClipboardManager = context?.getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager

clipboard.addOnPrimaryClipChangedListener{

...

}