web-dev-qa-db-fra.com

Android Créer un menu simple par programme

J'essaie de créer un menu simple avec un bouton qui appellera une méthode pour effacer le tableau. Je ne veux pas utiliser xml car tout ce dont j'ai besoin, c'est d'un bouton.

Quelque chose comme ça -

public boolean onCreateOptionsMenu(Menu menu) {
    button "Clear Array";
    onClick{// run method that wipes array};
    return true;
}

Je vous remercie

39
Shmuel

La méthode de A - C fonctionne, mais vous devez éviter de définir manuellement les écouteurs de clic. Surtout lorsque vous avez plusieurs éléments de menu.

Je préfère cette façon:

private static final int MENU_ITEM_ITEM1 = 1;
...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, MENU_ITEM_ITEM1, Menu.NONE, "Item name");
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case MENU_ITEM_ITEM1:
        clearArray();
        return true;

    default:
        return false;
  }
}

En utilisant cette approche, vous évitez de créer des objets inutiles (écouteurs) et je trouve également que ce code est plus facile à lire et à comprendre.

66
Paul

Quelque chose comme ça pourrait marcher:

public boolean onCreateOptionsMenu(Menu menu) {
  MenuItem item = menu.add ("Clear Array");
  item.setOnMenuItemClickListener (new OnMenuItemClickListener(){
    @Override
    public boolean onMenuItemClick (MenuItem item){
      clearArray();
      return true;
    }
  });
  return true;
}

Menu nous donne une méthode pratique, add() , qui vous permet d’ajouter un MenuItem. Alors on en fait un. Ensuite, nous assignons une OnMenuItemClickListener à la MenuItem et ignorons sa onMenuItemClick() pour faire ce que nous voulons.

25
A--C

Par programme, j'ai pu créer un menu simple en utilisant le code suivant.

private final int MenuItem_EditId = 1, MenuItem_DeleteId = 0;

@Override
  public boolean onCreateOptionsMenu(Menu menu){

    MenuItem edit_item = menu.add(0, MenuItem_EditId, 0, R.string.edit);
    edit_item.setIcon(R.drawable.edit);
    edit_item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    MenuItem delete_item = menu.add(0, MenuItem_DeleteId, 1, R.string.edit);
    delete_item.setIcon(R.drawable.delete);
    delete_item.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM);

    return super.onCreateOptionsMenu(menu);
}
15
Vikas

Ici, j'ai implémenté le menu contextuel dynamiquement en utilisant un écouteur de clic.

    Dynamic_PopUpMenu.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu menu = new PopupMenu(DialogCheckBox.this, v);
            menu.getMenu().add("AGIL");  // menus items
            menu.getMenu().add("Dash");  // menus items
            menu.getMenu().add("AGILarasan");
            menu.getMenu().add("Arasan");
            menu.show();
        }
    });
0
Agilanbu