2013-05-07 2 views
0

Я делаю приложение для Android. Когда пользователь нажимает на кнопку аппаратного меню устройства, я хочу открыть настраиваемое всплывающее меню с параметрами, относящимися к моей деятельности. Согласно документации по Android, можно создавать только контекстное меню и меню опций, и нет доступа к функциям кнопки меню аппаратного обеспечения. Как это сделать?Как добавить функции в меню, связанные с кнопкой меню оборудования?

ответ

1

Более новые устройства Android (работающие под управлением 3.0+) больше не нуждаются в наличии кнопки меню оборудования (source). Вы можете создать меню, следующее за this tutorial. Когда вы создаете меню опций, приложение позволит пользователю открыть его с помощью кнопки меню аппаратного обеспечения, если на устройстве есть устройство. Если это не так, на панели действий отобразится кнопка меню. (source).

Если вам по какой-либо причине необходимо обнаружить нажатие кнопки меню, вы можете сделать это, переопределив метод onKeyUp(int, KeyEvent) вашего Activity.

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_MENU) { 
     // do stuff 
     return true; 
    } else { 
     return super.onKeyUp(keyCode, event); 
    } 
} 

Если вам нужно открыть меню в коде, вы можете вызвать метод Activity.openOptionsMenu().

+0

Хорошо, и как добавить параметры в меню? –

+0

Пожалуйста, проверьте отредактированный (фактически, почти полностью новый :)) ответ. – zbr

0

Мой ответ полностью основан на http://developer.android.com/guide/topics/ui/menus.html

Пожалуйста, прочитайте эту страницу для полной информации, описание и больше знаний о том, как это сделать

Создание XML:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/new_game" 
      android:icon="@drawable/ic_new_game" 
      android:title="@string/new_game" 
      android:showAsAction="ifRoom"/> 
    <item android:id="@+id/help" 
      android:icon="@drawable/ic_help" 
      android:title="@string/help" /> 
</menu> 

Используйте этот код чтобы показать его:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.game_menu, menu); 
    return true; 
} 

Этот код используется для ручного перевода e clicks:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection 
    switch (item.getItemId()) { 
     case R.id.new_game: 
      newGame(); 
      return true; 
     case R.id.help: 
      showHelp(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
Смежные вопросы