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
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.
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.
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);
}
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();
}
});