剪贴板不更新剪辑
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{
...
}
一开始它可以工作,但是当我复制新元素时它不会更新剪辑。
而且我发现它甚至没有在监听器中执行任何操作。
代码:
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{
...
}