Моя проблема заключается в следующем;
У меня есть текст для редактирования, и я использую setKeyListener и создаю новый NumberKeyListener.В этом случае при нажатии клавиши при нажатии на число оно работает, как и ожидалось, но когда нажата кнопка удаления / возврата, оно не регистрируется при первых попытках X, но при X + 1 оно будет, где X - это число, другихключи, которые я нажал.Например, если я ввел 5, затем 6, затем 7, мой текст редактирования будет показывать 567, если я нажму «Удалить», ничего не произойдет, ударит его дважды, все еще ничего, при 4-м попадании он окончательно удалит 7 и будет 56.Это очень странно, потому что у меня есть запись журнала в обратном вызове keydown, и кажется, что он даже не запускается на первых 3 нажатиях?
Любые предложения приветствуются.
ОБНОВЛЕНИЕ: Я заметил, что если я щелкну по тексту редактирования и вернусь к нему, мои удаления будут регистрироваться при первом нажатии.Есть ли какой-нибудь буфер нажатия клавиш, связанный с правками редактирования, который необходимо очистить или что-то в этом роде?
myedittext.setKeyListener(new NumberKeyListener() {
@Override
public int getInputType() {
return InputType.TYPE_CLASS_NUMBER;
}
@Override
public boolean onKeyDown(View view, Editable content, int keyCode, KeyEvent event) {
if (keyCode >= KeyEvent.KEYCODE_0 && keyCode <= KeyEvent.KEYCODE_9) {
//logic here
} else if (keyCode == KeyEvent.KEYCODE_DEL) {
Log.i("DEBUG","delete key hit");
//more logic here
}
Log.i("DEBUG","key was pressed");
update();
return true;
}
@Override
protected char[] getAcceptedChars() {
return new char[]{'0','1','2','3','4','5','6','7','8','9'};
}
});
С помощью приведенного выше кода я удалил всю свою логику и update()
вызовы из кейлистов, все это, это просто распечатка журналов, и я вижу то же поведение, что он, похоже, не распознает первые x нажатий на удаление.