Вставить в несколько правок - PullRequest
0 голосов
/ 12 октября 2018

У меня есть набор из четырех представлений EditText, которые используются для ввода 4-значного кода.Для каждого из них установлено максимальное значение длины 1, поскольку они содержат одну из этих цифр.

Теперь я хочу, чтобы мои пользователи могли скопировать четырехзначный код и вставить его непосредственно в 4 поля.

Я попытался обнаружить событие вставки, используя:

@Override
    public boolean onTextContextMenuItem(int id) {
        boolean consumed = super.onTextContextMenuItem(id);
        switch (id){
            case android.R.id.cut:
                onTextCut();
                break;
            case android.R.id.paste:
                onTextPaste();
                break;
            case android.R.id.copy:
                onTextCopy();
        }
        return consumed;
    }

как в этот вопрос , но у меня нет способа вернуть вставленный текст в обратном вызове.

Я также пытался с помощью:

переопределить веселье доTextChanged (s: CharSequence ?, start: Int, count: Int, после: Int) {}

override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}

Но изПри вставке текста я получаю только 1 символ, я думаю, потому что maxLength установлен на 1.

Как мне добиться желаемого поведения?

1 Ответ

0 голосов
/ 12 октября 2018

Может быть, это может помочь вам

 private void pasteText() {
        ClipboardManager clipboardManager = (ClipboardManager)
                getSystemService(Context.CLIPBOARD_SERVICE);

        if(clipboardManager.hasPrimaryClip()) {
            ClipData.Item item = clipboardManager.getPrimaryClip().getItemAt(0);

            CharSequence ptext = item.getText();
            for(int i = 0 ; i <= ptext.length() ; i++){
    // 4 cases and paste to 4 edittexts
    }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...