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.7 Gestion <strong>des</strong> menus de l’application<br />

se trouvent dans un sous-menu.<br />

Les 5.1 et 5.2 sont désactivés par défaut, mais vous pouvez les réactiver de manière<br />

programmatique à l’aide de la fonction MenuItem setEnabled (boolean activer) (le<br />

MenuItem retourné est celui sur lequel l’opération a été effectuée, de façon à pouvoir cumuler<br />

les setters).<br />

[[information]] | Un setter est une méthode qui permet de modifier un <strong>des</strong> attributs d’un objet. Un<br />

getter est une méthode qui permet, elle, de récupérer un attribut d’un objet.<br />

Vous pouvez aussi si vous le désirez construire un menu de manière programmatique avec la méthode<br />

suivante qui s’utilise sur un Menu :<br />

MenuItem add (int groupId, int objectId, int ordre, CharSequence titre)<br />

Où :<br />

— groupId permet d’indiquer si l’objet appartient à un groupe. Si ce n’est pas le cas, vous<br />

pouvez mettre Menu.NONE.<br />

— objectId est l’identifiant unique de l’objet, vous pouvez aussi mettre Menu.NONE, mais<br />

je ne le recommande pas.<br />

— ordre permet de définir l’ordre dans lequel vous souhaitez le voir apparaître dans le menu.<br />

Par défaut, l’ordre respecté est celui du fichier XML ou de l’ajout avec la méthode add, mais<br />

avec cette méthode vous pouvez bousculer l’ordre établi <strong>pour</strong> indiquer celui que vous préférez.<br />

Encore une fois, vous pouvez mettre Menu.NONE.<br />

— titre est le titre de l’item.<br />

De manière identique et avec les mêmes paramètres, vous pouvez construire un sous-menu avec<br />

la méthode suivante :<br />

MenuItem addSubMenu (int groupId, int objectId, int ordre, CharSequence titre)<br />

[[question]] | Et c’est indispensable de passer le menu à la superclasse comme on le fait ?<br />

La réponse courte est non, la réponse longue est non, mais faites-le quand même. En passant<br />

le menu à l’implémentation par défaut, Android va peupler le menu avec <strong>des</strong> items systèmes<br />

standards. Alors, en tant que débutants, vous ne verrez pas la différence, mais si vous devenez<br />

<strong>des</strong> utilisateurs avancés, un oubli <strong>pour</strong>rait bien vous encombrer.<br />

3.7.1.2 Réagir aux clics<br />

Vous vous rappelez quand je vous avais dit qu’il était inconcevable d’avoir un sans identifiant<br />

? C’était parce que l’identifiant d’un permet de déterminer comment il réagit aux<br />

clics au sein de la méthode boolean onOptionsItemSelected (MenuItem item).<br />

Dans l’exemple précédent, si on veut que cliquer sur le premier item active les deux items inactifs,<br />

on <strong>pour</strong>rait utiliser le code suivant dans notre activité :<br />

private Menu m = null ;<br />

@Override<br />

public boolean onCreateOptionsMenu(Menu menu)<br />

{<br />

MenuInflater inflater = getMenuInflater();<br />

215

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

Saved successfully!

Ooh no, something went wrong!