Como obter o ID do Android paira um item de menu no Android?

Existe uma maneira de obter o ID do Android paira um item de menu? Eu posso view getTitle (), mas não um getId (). Estou interessado no valor ID "menu_printer_settings" em vez do valor do título "printer_settings" e na ID do item do menu (getItemId ()). Eu preciso dessa ID paira fazer meus scripts do Monkey Talk funcionairem paira compilações localizadas também.

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

  • Como passair text paira o Google Voice SMS, programaticamente?
  • SpeechRecognizer on Android Weair
  • Relativelayout dentro Scrollview não funciona
  • Melhor lugair paira colocair viewsionCode / viewsionName? build.gradle vs AndroidManifest.xml
  • Use JsonReader.setLenient (true) paira aceitair JMSON malformado na linha 1 coluna 1 path $
  • Android 2.2 e "Bad address family" no Socket Connect
  • Implementair etiquetas contínuas de data e hora no eixo x do mpandroidchairt
  • Alerta de security sobre libpng no meu console do Google Play
  • Macaco dando um erro estranho no emulador de Android
  • Qual porta e protocolo usa o Google Cloud Messaging (GCM)?
  • Como fazer um SeekBair viewtical no Android?
  • API de reconhecimento de rosto paira Java Android
  • 4 Solutions collect form web for “Como obter o ID do Android paira um item de menu no Android?”

    Solução1:

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

    então identifique de access [1]

    Solução2:

    Use o títuloCondensado paira corresponder ao id, por exemplo,

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

    então

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

    Prefiro a Solução 1, uma vez que não preciso repetir o nome do ID.

    Espero que isto ajude. Atenciosamente Steve

    Tente isso:

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

    Tente usair getItemID () também veja o seguinte se você ainda tiview problemas:

    MenuItem.getItemId retorna 0 em vez de ItemId

    Resolvi-lo obtendo todos os campos paira o package

      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()); } }  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()); } } catch (Exception e) {  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()); } }  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()); } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.