2015-05-01 5 views
1

Я работаю над приложением дистанционного управления и вам нужно определить, когда пользователь нажал кнопку удаления <x в пустое текстовое поле, чтобы отправить этот символ и удалить что-то с удаленной машины.Android, как обнаружить кнопку «удалить», нажать на клавиатуре, чтобы удалить один символ?

Как определить, что пользователь нажал кнопку <x Удалить на клавиатуре Android?

Я попытался объявить о прослушивании клавиш, но это, похоже, не сработало.

final EditText edittext = (EditText) findViewById(R.id.editText); 
edittext.setOnKeyListener(new View.OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     // If the event is a key-down event on the "enter" button 
     Log.i("KEYCODE", "" + keyCode); 
     if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
       (keyCode == KeyEvent.KEYCODE_ENTER)) { 
      // Perform action on key press 
      return false; 
     } else if (edittext.length() == 0) { 
      if(keyCode == KeyEvent.KEYCODE_DEL) { 
       //perform erase when the text field is empty 
      } 
     } 
     return false; 
    } 
}); 
+0

BACKSPACE, TAB, ENTER, RETURN, ESC и DELETE) не требуют проверки, чтобы убедиться, что ключ закодирован; для этих ключей вы должны просто использовать ключевую переменную direct46 is keyCode fore delete – MaxZoom

+0

Я просто добавил кнопку на экран, эквивалентный удалению. Я показываю/скрываю его с клавиатуры –

+0

Прохладный, можно ли увидеть? – MaxZoom

ответ

1

Вы не можете использовать View.OnKeyListener для программных клавиатур.

View.OnKeyListener:

Определение интерфейса для обратного вызова, которая будет вызвана, когда событие аппаратный ключ отправляется с этой точкой зрения. Это полезно только для аппаратных клавиатур; метод ввода программного обеспечения не обязан запускать этот слушатель.

Источник: http://developer.android.com/reference/android/view/View.OnKeyListener.html

1

Я знаю, что поздно, но надеюсь, что это поможет кому-то еще. Там нет прямой способ сделать это с помощью слушателя, но если вы смотрите в документации onTextChanged Listener вы найдете это:

Этот метод вызывается, чтобы уведомить вас, что, в сек, в кол символов, начинающихся с start только что заменили старый текст, длина которого до.

Таким образом, в случае забоя вы будете иметь это условие:

Within s (редактируемый вид), символов, начиная с начала (зависит от позиции курсора) заменили старый текст длиной до (его значение будет равно 1, если только пользователь не выделил какой-то текст, а затем ударил обратно)

Итак, если count == 0, вы можете предположить, что нажата клавиша удаления.