Android MenuItem.getItemId возвращает целочисленные значения - PullRequest
0 голосов
/ 17 ноября 2011

У меня проблема в моем проекте Android при попытке создать меню параметров.

Когда я отлаживаю / запускаю свое приложение и нажимаю на кнопку меню, атрибут ВСЕГДА R.id.btnInfo возвращает целое число, а не идентификатор пункта меню (btnInfo).

Вот код:

Объявление меню:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/btnInfo"
      android:title="@string/btnInfo"
      android:icon="@drawable/ic_info" />
</menu>

Меню загрузки:

/**
 * Options Menu Inflater Event
 */
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
   MenuInflater inflater = getMenuInflater();
   inflater.inflate(R.menu.options, menu);
   return true;
 }

Событие клика:

/**
 * Click on Options Menu Button
 */
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
   case R.id.btnInfo:
     // To-do:
     return true;
   default:
     return super.onOptionsItemSelected(item);
   }
 }

1 Ответ

2 голосов
/ 17 ноября 2011

Это правильное поведение.

Проверьте файл R.java, для каждого элемента, которому вы присваиваете идентификатор, он также генерирует целочисленный идентификатор.

Пример:

public static final class menu {
    public static final int option1=0x7f0a0000;
    public static final int option2=0x7f0a0001;
    public static final int option3=0x7f0a0002;
}
...