Propriété de Albiri Sigue
customer 27921 at Fri Mar 11 19:19:45 +0100 2011
132 L’art du développement Android
Puis vous devez implémenter la méthode onCreateContextMenu(), qui, entre autres
choses, reçoit l’objet View que vous aviez fourni à registerForContextMenu(). Si votre
activité doit construire plusieurs menus contextuels, ceci permet d’identifier le menu
concerné.
La méthode onCreateContextMenu() reçoit en paramètre le ContextMenu lui-même, la
View à laquelle est associé le menu contextuel et un objet ContextMenu.ContextMenuInfo, qui indique l’élément de la liste qui a été touché et maintenu par l’utilisateur (au
cas où vous souhaiteriez personnaliser ce menu contextuel en fonction de cette information).
Il est également important de remarquer qu’onCreateContextMenu() est appelée à
chaque fois que le menu contextuel est sollicité. À la différence d’un menu d’options (qui
n’est construit qu’une seule fois par activité), les menus contextuels sont supprimés après
utilisation. Par conséquent, vous ne pouvez pas compter sur l’objet ContextMenu fourni ;
il faut reconstruire le menu pour qu’il corresponde aux besoins de votre activité.
Pour être prévenu de la sélection d’un choix de menu contextuel, implémentez la méthode
onContextItemSelected() de l’activité. Dans cette méthode de rappel, vous n’obtiendrez que l’instance du MenuItem qui a été choisi : si l’activité a plusieurs menus contextuels, vous devez donc vous assurer que les identifiants des éléments de menus sont
uniques afin de pouvoir les traiter de façon appropriée. Vous pouvez également appeler la
méthode getMenuInfo() du MenuItem afin d’obtenir l’objet ContextMenu.ContextMenuInfo que vous aviez reçu dans onCreateContextMenu(). Pour le reste, cette méthode
de rappel se comporte comme onOptionsItemSelected(), que nous avons décrite dans
la section précédente.
Illustration rapide
Le projet Menus/Menus contient une version modifiée de Selection/List (voir Chapitre 9) avec un menu associé. Les menus étant définis dans le code Java, le fichier de
description XML n’est pas modifié et ne sera donc pas reproduit ici.
Le code Java comprend en revanche quelques nouveautés :
public class MenuDemo extends ListActivity {
TextView selection;
String[] items={"lorem", "ipsum", "dolor", "sit", "amet",
"consectetuer", "adipiscing", "elit", "morbi", "vel",
"ligula", "vitae", "arcu", "aliquet", "mollis",
"etiam", "vel", "erat", "placerat", "ante",
"porttitor", "sodales", "pellentesque", "augue", "purus"};
public static final int EIGHT_ID = Menu.FIRST+1;
public static final int SIXTEEN_ID = Menu.FIRST+2;
public static final int TWENTY_FOUR_ID = Menu.FIRST+3;
public static final int TWO_ID = Menu.FIRST+4;
public static final int THIRTY_TWO_ID = Menu.FIRST+5;
Livre Android.book Page 132 Dimanche, 8. novembre 2009 12:23 12
Précédent

- 147/391

Suivant