【问题标题】:Android how to detect Copy event of Edittext in androidAndroid如何在android中检测Edittext的Copy事件
【发布时间】:2014-07-11 12:02:04
【问题描述】:

我有一个我想要的 android 应用程序:每当用户从编辑文本中按下复制时,任何事件都会发生,它是任何编辑文本,例如来自信使编辑文本,邮件编辑文本任何一个,当用户按下复制文本时,我想发生任何事件,所以任何人都给我这个例子吗?我不知道,所以请帮助我,在此先感谢。

【问题讨论】:

    标签: android events copy


    【解决方案1】:

    我得到了解决方案: 我创建了一项服务: 在 oncreate 中:

             ClipboardManager clipBoard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
             clipBoard.addPrimaryClipChangedListener(new ClipboardListener());
    

    并添加服务:

            class ClipboardListener implements
            ClipboardManager.OnPrimaryClipChangedListener {
            public void onPrimaryClipChanged() {
            ClipboardManager clipBoard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
            CharSequence pasteData = "";
            ClipData.Item item = clipBoard.getPrimaryClip().getItemAt(0);
            pasteData = item.getText();
            Toast.makeText(getApplicationContext(), "copied val=" + pasteData,
                    Toast.LENGTH_SHORT).show();
    
        }
    }
    

    【讨论】:

    • 粘贴事件怎么样?
    【解决方案2】:

    通过使用下面的 EditText 代码,您可以获得剪切/复制/粘贴的事件。

    public class EditTextMonitor extends EditText{
    private final Context mcontext; // Just the constructors to create a new EditText...
    
    public EditTextMonitor(Context context) {
        super(context);
        this.mcontext = context;
    }
    
    public EditTextMonitor(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.mcontext = context;
    }
    
    public EditTextMonitor(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.mcontext = context;
    }
    
    
    @Override
    public boolean onTextContextMenuItem(int id) {
        // Do your thing:
        boolean consumed = super.onTextContextMenuItem(id);
        // React:
        switch (id){
            case android.R.id.cut:
                onTextCut();
                break;
            case android.R.id.paste:
                onTextPaste();
                break;
            case android.R.id.copy:
                onTextCopy();
        }
        return consumed;
    }
    
    /**
     * Text was cut from this EditText.
     */
    public void onTextCut(){Toast.makeText(mcontext, "Event of Cut!", Toast.LENGTH_SHORT).show();
    }
    
    /**
     * Text was copied from this EditText.
     */
    public void onTextCopy(){
        Toast.makeText(mcontext, "Event of Copy!", Toast.LENGTH_SHORT).show();
    }
    
    /**
     * Text was pasted into the EditText.
     */
    public void onTextPaste(){
        Toast.makeText(mcontext, "Event of Paste!", Toast.LENGTH_SHORT).show();
    }}
    

    【讨论】:

    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多