09.02.2017 Views

creez-des-applications-pour-android

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3 Création d’interfaces graphiques<br />

}<br />

inflater.inflate(R.menu.menu, menu);<br />

m = menu;<br />

return true ;<br />

@Override<br />

public boolean onOptionsItemSelected (MenuItem item)<br />

{<br />

switch(item.getItemId())<br />

{<br />

case R.id.item1 :<br />

//Dans le Menu "m", on active tous les items dans le groupe d'identifiant "R.id.g<br />

m.setGroupEnabled(R.id.group2, true);<br />

return true ;<br />

}<br />

return super.onOptionsItemSelected(item);<br />

}<br />

[[question]] | Et ils veulent dire quoi les true et false en retour ?<br />

On retourne true si on a bien géré l’item, false si on a rien géré. D’ailleurs, si on passe l’item<br />

à super.onOptionsItemSelected(item), alors la méthode retournera false puisqu’elle ne<br />

sait pas gérer l’item. En revanche, je vous conseille de toujours retourner super.onOptionsItemSelected(ite<br />

quand vous êtes dans une classe qui ne dérive pas directement de Activity, puisqu’il se peut<br />

que vous gériez l’item dans une superclasse de votre classe actuelle.<br />

Dans boolean onCreateOptionsMenu(menu), on retourne toujours true puisqu’on gère dans<br />

tous les cas la création du menu.<br />

[[information]] | Google nous fournit une astuce de qualité sur son site : souvent, une application<br />

partage plus ou moins le(s) même(s) menu(s) entre tous ses écrans (et donc toutes ses activités),<br />

c’est <strong>pour</strong>quoi il est conseillé d’avoir une activité de base qui ne gère que les évènements liés au(x)<br />

menu(s) (création dans onCreateOptionsMenu, mise à jour dans onPrepareOptionsMenu et<br />

gestion <strong>des</strong> évènements dans onOptionsItemSelected), puis d’en faire dériver toutes les activités<br />

de notre application qui utilisent les mêmes menus.<br />

3.7.2 Menu contextuel<br />

Le menu contextuel est très différent du menu d’options, puisqu’il n’apparaît pas quand on appuie<br />

sur le bouton d’options, mais plutôt quand on clique sur n’importe quel élément ! Sur Windows,<br />

c’est le menu qui apparaît quand vous faites un clic droit.<br />

Alors, on ne veut peut-être pas que tous les objets aient un menu contextuel, c’est <strong>pour</strong>quoi il faut<br />

déclarer quels widgets en possèdent, et cela se fait dans la méthode de la classe Activity void<br />

registerForContextMenu (View vue). Désormais, dès que l’utilisateur fera un clic long sur<br />

cette vue, un menu contextuel s’ouvrira… enfin, si vous le définissez !<br />

Ce menu se définit dans la méthode suivante :<br />

void onCreateContextMenu (ContextMenu menu, View vue, ContextMenu.ContextMenuInfo menuI<br />

216

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!