Вызов встроенной функции отмены EditText, отправив Ctrl + Z - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь выполнить встроенную функцию отмены Android EditText (через TextView), отправив Ctrl+Z:

public static KeyEvent keyEvent(int keycode, int metaState) {
    final long currentTime = System.currentTimeMillis();
    return new KeyEvent(currentTime, currentTime, KeyEvent.ACTION_DOWN, keycode, 0, metaState);
}

mEditText.dispatchKeyEvent(keyEvent(KeyEvent.KEYCODE_Z, KeyEvent.META_CTRL_ON | KeyEvent.META_CTRL_LEFT_ON));

Однако, это не работает (ничего не делает).Если я подключаю клавиатуру Bluetooth и набираю Ctrl+Z, она работает, и отмена выполняется в тексте редактирования.

Кроме того, отправка только письма z без Ctrl, работает и добавляетz символ в редактируемом тексте:

mEditText.dispatchKeyEvent(keyEvent(KeyEvent.KEYCODE_Z, 0));

Я также пытался (основываясь на этот ответ и комментарии):

mEditText.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_CTRL_LEFT));
mEditText.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_X));
mEditText.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_X));
mEditText.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_CTRL_LEFT));

но это простодобавляет символ z к тексту редактирования.

...