Можете ли вы перехватить долгое нажатие в меню?

1

Я использую то, что должно быть довольно простым кодом, но он просто не хочет работать. Блокирует ли блок ОС это?

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent event) {


    if (keyCode == KeyEvent.KEYCODE_MENU) 
    {
    longOptionPress = true;
    openOptionsMenu();
        return true;
    }
    return super.onKeyLongPress(keyCode, event);
}
Теги:

2 ответа

10
Лучший ответ

Вы должны вызвать startTracking() в событии из обычного метода onKeyPress():

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
        event.startTracking();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

См. также вопрос, который я задал и ответил некоторое время назад.

  • 0
    Спасибо за быстрый ответ и ссылку ... которая ответила на вопрос о том, что обычное меню не запускается.
  • 0
    Проблема в том, что вы не получаете ни одного нажатия на кнопку меню. Как вы этого избегаете?
1

Если это ListView, вам нужно использовать onCreateContextMenu.

 public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню