gpt4 book ai didi

android - 当用户将最后一个文本粘贴到编辑文本中时如何获取它

转载 作者:行者123 更新时间:2023-11-29 18:31:09 25 4
gpt4 key购买 nike

我有一个编辑文本,里面有很多单词。粘贴一些关键字后,我只想捕获粘贴的关键字。

我找到了不同的解决方案,但它只给我粘贴或剪切的文本。我也想要关键字。

How to detect the paste event in editext of the application?

是否有像 swift 这样的解决方案,或者我们必须再次破解。

对不起我糟糕的英语。

“测试测试测试”-> 粘贴新的->“测试测试在此处粘贴文本测试”

我想获得“在此处粘贴文本”

最佳答案

您必须制作一个可以捕获粘贴事件的自定义 EditText。为此,它需要覆盖 onTextContextMenuItem(int id)

这样就够了:

public class MyEditText extends EditText {

UpdateListener listener;

public MyEditText(Context context) {
super(context);
}

public MyEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}

public MyEditText(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

public MyEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}

public void setUpdateListener(UpdateListener listener){
this.listener = listener;
}

@Override
public boolean onTextContextMenuItem(int id) {
boolean consumed = super.onTextContextMenuItem(id);

switch (id){
case android.R.id.cut :
if(listener != null) listener.onCut();
break;
case android.R.id.copy :
if(listener != null) listener.onCopy();
break;
case android.R.id.paste :
if(listener != null) listener.onPaste();
}

return consumed;
}

interface UpdateListener{
void onCut();
void onCopy();
void onPaste();
}
}

然后,在activity中,你必须实现这个自定义EditText给出的接口(interface)

editText = findViewById(R.id.textview2);
editText.setUpdateListener(new MyEditText.UpdateListener() {
@Override
public void onCut() {
Log.i(TAG, "onCut: ");
}

@Override
public void onCopy() {
Log.i(TAG, "onCopy: ");
}

@Override
public void onPaste() {
Log.i(TAG, "onPaste: ");
// triggered when code is pasted
}
});

如果我理解你想要当用户粘贴一些东西时,它会删除​​所写的内容并粘贴文本。在 onPaste() 中:

@Override
public void onPaste() {
Log.i(TAG, "onPaste: ");
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
String pasteData = "";
//check if something present in clipboard, and check if it is text
if (clipboard.hasPrimaryClip() && clipboard.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN)) {
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
pasteData = item.getText().toString();
editText.setText(pasteData);
}
}

关于android - 当用户将最后一个文本粘贴到编辑文本中时如何获取它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56216676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com