2013-04-16 2 views
4

Я пытаюсь поймать события, созданные клавишами со стрелками (UP, DOWN, RIGHT и LEFT) и отключить их. Ниже фрагмента кода относится к одному из классов активности.Отключить ключи DPAD в android

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if(event.getAction() == KeyEvent.KEYCODE_DPAD_DOWN) return true; 
    else return true; 
} 

Однако с этим кодом на месте работает клавиатура. Я попробовал добавить ключевого слушателя к активности, которая тоже не работает.

Целевое устройство Samsung GT-I5500 с версией Android 2.2.

Я ничего не пропустил?

+0

Я не уверен, что возвращает event.getAction, но, может быть, попытаться использовать, если (KEYCODE == KeyEvent.KEYCODE_DPAD_DOWN) – MP23

+0

Я попробовал это тоже! но не работает. – Renjith

ответ

0

В documentation, говорится, что вы должны вернуться:

  • верно если вы обработал событие
  • ложные если если вы хотите разрешить событие быть обработаны следующий приемник.

Ваш метод возвращает ложь, так что вы передаете событие ключа обработчика по умолчанию

+0

проверить изменения! Теперь я возвращаюсь к методу. но ключи по-прежнему включены – Renjith

6

Override OnKeyDown также и возвращает истину, а не ложь. Somnething так:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_DPAD_LEFT: 
     case KeyEvent.KEYCODE_DPAD_RIGHT: 
     case KeyEvent.KEYCODE_DPAD_UP: 
     case KeyEvent.KEYCODE_DPAD_DOWN: 
      return true; 
    } 
    return false; 
} 
+0

Спасибо за ответ! Но это вряд ли изменило ситуацию. Кстати, мое - это приложение с вкладками, использующее tabHost и TabGroupActivity. Так что я должен позаботиться? – Renjith

Смежные вопросы