Comment ajouter des éléments de sous-menu à l'ActionBar action dans le code?

Via xml, je peux ajouter des éléments de sous-menu de mon action dans le ActionBar.

Comment ajouter des éléments de sous-menu à l'ActionBar action dans le code?

main_menu.xml:

Mais comment puis-je ajouter ces sous-éléments via le code Java? Il ne fonctionne pas comme ci-dessous, les sous-éléments sont s'ajouter à la mauvaise action (et aussi le drawable n'est pas montré), le très bouton de droite, pas de ma "Nouvelle Forme" bouton:

Comment ajouter des éléments de sous-menu à l'ActionBar action dans le code?

main_menu.xml:

De Code Java:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
Log.d("MainMenu", ",menu title0: " + menu.getItem(0).getTitle()); 
//returns "New Form"
menu.addSubMenu(0, Menu.NONE, 1, "Form 1").setIcon(R.drawable.attachment);
menu.addSubMenu(0, Menu.NONE, 2, "Form 2").setIcon(R.drawable.attachment);
return true;
}

Est-il un moyen pour atteindre cet objectif, l'ajout de sous-menu articles par l'intermédiaire de Code Java à la place de XML, sans à l'aide d'un PopupMenu (http://developer.android.com/guide/topics/ui/menus.html#PopupMenu)?

Mise À Jour (Solution):

Mon dernier fragment de code suivant, j'ai fini par remplir le sous-menu dynamiquement, à la suite de adamp réponse:

//menu options
private static final int MENU_PREFERENCES = Menu.FIRST;
private static final int MENU_LOGOUT = 2;
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
menu.add(0, MENU_PREFERENCES, 0, getString(R.string.general_preferences)).setIcon(
android.R.drawable.ic_menu_preferences);
//load all available form templates
Cursor c = managedQuery(FormsProviderAPI.FormsColumns.CONTENT_URI, null, null, null, null);
try {
int ixDisplayName = c.getColumnIndex(FormsProviderAPI.FormsColumns.DISPLAY_NAME);
int ixId = c.getColumnIndex(FormsProviderAPI.FormsColumns._ID);
int cnt = 0;
while (c.moveToNext()) {
cnt++;
Log.d("ID: ", "ID: "+ c.getInt(ixId));  //misusing the group id for the form id
menu.getItem(1).getSubMenu().addSubMenu(c.getInt(ixId), Menu.NONE, cnt, c.getString(ixDisplayName)).setIcon(R.drawable.attachment_dark);
}
} catch (Exception e) {
Log.e(TAG, "Error init form templates list.", e);
}
return true;
}
  • J'utilise ce code pour mon application @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-généré méthode stub super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R. menu.poi_menu, menu); for (int i = 0; i < nom.longueur; i++) { menu.getItem(0).getSubMenu() .add(0, Menu.AUCUN, je, nom[i] + " (" + type[i] + ")") .setIcon(R. drawable.zoomin); } return true; } mais encore l'Icône n'apparaît pas...