J'ai un menu créé à travers:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("Email");
return super.onCreateOptionsMenu(menu);
}
Mais je ne me souviens pas comment définir un onclicklistener donc quand il est sélectionné, je peux exécuter ma fonction de messagerie.
Remplacez onOptionsItemSelected(MenuItem item)
. Ce serait donc comme
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 0:
// do whatever
return true;
default:
return super.onOptionsItemSelected(item);
}
}
ÉDITER:
Étant donné que cela a obtenu tant de points, je dois noter qu'il est très bon d'ajouter des ID aux options de menu. Un bon moyen de vous assurer qu'ils sont toujours uniques est de les définir dans une ressource ids.xml
Qui est placée dans le dossier res/values
.
ids.xml
<resources>
<item name="menu_action1" type="id"/>
<item name="menu_action2" type="id"/>
<item name="menu_action3" type="id"/>
</resources>
Ensuite, lorsque vous remplacez la méthode onCreateOptionsMenu(Menu menu)
, vous pouvez utiliser les ID comme suit:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, R.id.menu_action1, Menu.NONE, R.string.menu_action1);
menu.add(Menu.NONE, R.id.menu_action2, Menu.NONE, R.string.menu_action1);
return true;
}
Remplacez onOptionsItemSelected(MenuItem item)
.
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_action1:
// do whatever
return true;
case R.id.menu_action2:
// do whatever
return true;
default:
return super.onOptionsItemSelected(item);
}
}
La raison pour laquelle vous le faites est que Activity
remplacerait cela par les options de menu, mais Fragments
peut également ajouter leurs propres éléments de menu. L'utilisation du ids.xml
Garantit que les identifiants sont uniques, quelle que soit leur commande.
Ça ne marchera pas. Vous devez définir des ID pour vos éléments de menu:
public static final int MENU_ADD = Menu.FIRST;
public static final int MENU_DELETE = Menu.FIRST + 1;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "Add");
menu.add(Menu.NONE, MENU_DELETE, Menu.NONE, "Delete");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch(item.getItemId())
{
case MENU_ADD:
return true;
case MENU_DELETE:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
De Guide du développeur Android
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
newGame();
return true;
case R.id.help:
showHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.itemid:
//do cool stuff
break;
}
}