Intereting Posts
Проблема с подключением к Интернету в Интернете Показывать значение при нажатии Значок изображения в раскрывающемся списке в андроиде Как хранить и извлекать изображения в базе данных Androidite SQL и отображать их на gridview Как проверить, подключены ли Bluetooth-гарнитуры на Android? Android-приложение не запускает noClassDefFoundError Использование локального устройства ADB на устройстве (loopback) показывает отсутствие устройств Ошибка конструкторов без значения по умолчанию в фрагментах SpeechRecognizer на Android-устройстве без Google Apps Почему Android рисует «Просмотр внутри другого» (с шириной и высотой, определенной в пикселях) неверным образом? Как изменить RealmList на RealmResult? Отключить сообщения WebView с вывода logcat Создавайте бесплатные / платные версии приложения из того же кода Именование моего приложения в android Создайте боковую панель, например браузер Dolphin или Firefox в Android

Как получить идентификатор Android для элемента меню в Android?

Есть ли способ получить идентификатор Android для элемента меню? Я вижу getTitle (), но не getId (). Меня интересует значение ID «menu_printer_settings», а не название «printer_settings» и идентификатор элемента меню (getItemId ()). Мне нужен этот идентификатор, чтобы мои скрипты Monkey Talk работали и для локализованных сборок.

<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_printer_settings" android:title="@string/printer_settings" /> 

Solutions Collecting From Web of "Как получить идентификатор Android для элемента меню в Android?"

Solution1:

 MenuItem item String[] id = getResources().getResourceName(item.getItemId()).split("\\/"); 

Затем идентификатор доступа [1]

Solution2:

Использовать titleCondensed для соответствия id, например

 <menu> <item android:id="@+id/myid" android:title="some menu title" android:titleCondensed="myid"/> ... </menu> 

тогда

 String selectedMenuIdString = (String) item.getTitleCondensed(); 

Я предпочитаю решение 1, так как мне не нужно повторять идентификационное имя.

Надеюсь это поможет. С уважением, Стив

Попробуй это:

 public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_printer_settings: //do what you want break; } } 

Попробуйте использовать getItemID () также, если у вас все еще есть проблемы:

MenuItem.getItemId возвращает 0 вместо ItemId

Решил его, получив все поля для пакета

  Map<Integer, String> idMap = new HashMap<Integer, String>(); Class<?> r; String rClass = activity.getBaseContext().getApplicationContext().getPackageName() + ".R$id"; try { r = Class.forName(rClass); } catch (ClassNotFoundException e1) { Log.log("Unable to load " + rClass + ": " + e1.getMessage()); return idMap; } for (Field f : r.getFields()) { int val; try { val = f.getInt(null); } catch (Exception e) { throw new IllegalStateException("Unable to get value for " + f.getName() + ": " + e.getMessage()); } idMap.put(val, f.getName()); }