LINUX.ORG.RU

Android, очистка и фокус для EditView

 ,


0

1

Добрый день,

имеется проблема. Простенькая программа для Андроид, нужно считать текст из EditView, при нажатии на Enter на хардварной клавиатуре, что-то с ним сделать, записать полученный текст в TextView, очистить поле EditView и вернуть ему фокус.

Код для этого дела:

code.setOnEditorActionListener(new OnEditorActionListener() {
  @Override
  public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    if (actionId == 0) {
      tvResult = (TextView) findViewById(R.id.tvResult);
      tvResult.setText(code.getText().toString());
      code.setText(null);
      code.requestFocus();
    }
  return true;
  }
});

Проблема в следующем: если возвращать true, то происходит, как я понял, два срабатывания, код отрабатывает два раза и в TextView соответственно заносится пустая строка, если возвращать false, то код отрабатывает один раз, но поле EditView не получает фокус. Подскажите где грабли, чего ему не хватает для нужного поведения

я могу ошибаться, но мне кажется, что двойное срабатывание происходит от того, что сначала приходит событие с event == ACTION_DOWN, а потом c ACTION_UP. Если вы будете обрабатывать только последнее, то все должно заработать.

Vinick ★★
()
Ответ на: комментарий от Vinick

Спасибо, исправил условие на

if (actionId == 0 && event.getAction() == KeyEvent.ACTION_UP)
и всё заработало как надо. Премного благодарен.

Toten_Kopf
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.