it-swarm.com.de

Android Erstellen Sie ein einfaches Menü programmgesteuert

Ich versuche, ein einfaches Menü mit einer Schaltfläche zu erstellen, die eine Methode zum Löschen des Arrays aufruft. Ich möchte kein XML verwenden, da ich nur einen Button brauche.

Etwas wie das -

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

Vielen Dank

39
Shmuel

Die Methode von A - C funktioniert, aber Sie sollten es vermeiden, die Klicklistener manuell einzustellen. Besonders wenn Sie mehrere Menüpunkte haben.

Ich bevorzuge diesen Weg:

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;
  }
}

Mit diesem Ansatz vermeiden Sie das Erstellen unnötiger Objekte (Listener) und ich finde, dass dieser Code einfacher zu lesen und zu verstehen ist.

66
Paul

So etwas könnte funktionieren:

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 gibt uns eine praktische Methode, add() , mit der Sie ein MenuItem hinzufügen können. Also machen wir eins. Dann weisen wir der OnMenuItemClickListener eine MenuItem zu und überschreiben deren onMenuItemClick() , um das zu tun, was wir wollen.

25
A--C

Programmgesteuert konnte ich mit dem folgenden Code ein einfaches Menü erstellen.

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

Hier habe ich das Popup-Menü dynamisch mit einem Klick-Listener implementiert.

    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