Я пытаюсь выполнить встроенную функцию отмены 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
к тексту редактирования.