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