Android - клавиша возврата не вызывает обратный вызов onKeyDown

    public boolean onKeyDown(int keyCode, KeyEvent event) 
    {
        if(this.keyHandler != null) this.keyHandler.onKeyDown(keyCode, event);
        return super.onKeyDown(keyCode, event);
    }

Это метод внутри моего представления поверхности OpenGL. Когда отображается клавиатура, нажатие ВСЕХ клавиш вызывает вызов этой переопределенной функции обратного вызова. Я проверил на своем Asus TF101 (Android 4.0.4), и все сработало, однако на моем LG nexus 4 нажатие клавиши возврата (KEYCODE_DEL) ничего не делает!

Есть ли что-то, что мне не хватает?

РЕДАКТИРОВАТЬ: я также пытался переопределить dispatchKeyEvent (событие KeyEvent) в моем классе активности, но клавиша Backspace все еще не поймана.


person Vladimir Gazbarov    schedule 30.08.2013    source источник


Ответы (2)


Есть две отдельные ошибки (проблемы 42904 и 62306), влияющие на генерацию KEYCODE_DEL в стандартной клавиатуре Google (LatinIME). В некоторых версиях клавиатуры есть одна ошибка, в некоторых другая, а в некоторых их нет. Вот почему на некоторых из ваших устройств возникают проблемы, а на других нет; это зависит от версии Google Keyboard, установленной на устройстве.

Я исследовал это и разработал обходной путь с кодом, который, похоже, решает обе эти проблемы. Сообщение, представляющее обходной путь, также объясняет, где и как они возникают. Этот пост можно найти здесь:

Android - невозможно захватить клавишу возврата/удаления в программном . клавиатура

person Carl    schedule 17.01.2014

Вы можете попытаться поймать клавишу «назад» и использовать этот метод, который срабатывает при нажатии «назад». http://developer.android.com/reference/android/app/Activity.html#onBackPressed()

Вы можете использовать

super.onBackPressed();

в вашем методе, или вы можете переопределить его, чтобы делать другие вещи при нажатии

@Override
public void onBackPressed() 
{
       // your instructions
}
person nahive    schedule 30.08.2013