-
25août
Gérer le menu de son application avec la class MonMenu sous android
Dans les applications Android pour créer un menu il faut implémenter (écrire)  la méthode onCreateOptionsMenu décrivant son menu, et la méthode onOptionsItemSelected pour les actions du menu, lire ce tuto Développez une application pour android etape 2 (le menu).
Par contre quand votre application commence à avoir plusieurs pages, ça devient très vite compliqué de gérer son menu, parce qu’à chaque fois qu’on rajoute un item dans un menu il faut repasser dans toutes ses classes.
Une des solutions, est de créer une classe MonMenu.java dans laquelle j’implémente les différents items et actions de mon menu.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
public class MonMenu extends Activity{ private Context lecontext=this; @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); boolean result = super.onCreateOptionsMenu(menu); int i=0; //inflater.inflate(R.menu.menurepas, menu); SubMenu Menu1 = menu.addSubMenu(0,1,i,"Menu1");i++; SubMenu Menu2= menu.addSubMenu(0,2,i,"Menu2");i++; //**************sous menu**************************** Menu1.add(1,11,1,"Sousmenu11"); Menu1 .add(1,12,2,"Sousmenu12"); Menu2.add(1,21,1,"Sousmenu21"); Menu2.add(1,22,2,"Sousmenu22"); return true; } public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { //***************lance activity menu1*************** case 1: Intent defineIntent1 = new Intent(lecontext,Menu1.class); lecontext.startActivity(defineIntent1); return true; //***************lance activity menu2*************** case 2: Intent defineIntent2 = new Intent(lecontext,Menu2.class); lecontext.startActivity(defineIntent2); return true; //***************lance activity sousmenu11*************** case 11: Intent defineIntent11 = new Intent(lecontext,Menu11.class); lecontext.startActivity(defineIntent11); return true; //***************lance activity sous menu12*************** case 12: Intent defineIntent12 = new Intent(lecontext,Menu12.class); lecontext.startActivity(defineIntent12); return true; //***************lance activity sous menu21*************** case 21: Intent defineIntent21 = new Intent(lecontext,Menu21.class); lecontext.startActivity(defineIntent21); return true; //***************lance activity sous menu22*************** case 22: Intent defineIntent22 = new Intent(lecontext,Menu22.class); lecontext.startActivity(defineIntent22); return true; } } }Ensuite chacune des classes de votre application deviennent juste des extensions de cette classe MonMenu.java
exemple:1 2 3 4
public class Gestionrepas extends MonMenu { ....... }Comme ça, vous ne gérez plus votre menu qu’avec cette classe.
Il est temps de mettre à profit les tutoriels d’Android France:
Passez à la vitesse supérieure et investissez quelques dizaines d’euros pour acquérir les connaissances qui vous feront gagner de l’argent avec vos applications rendez-vous sur notre boutique Android-france pour ces formations en vidéo
Formation Android en vidéo
10 commentaires
Laissez un commentaire
Vous devez être identifié pour publier un commentaire.
Connexion - Inscription
S'inscrire










Attention au copier coller, on a des “case 1:” partout.
Sinon merci pour les tutos.
Pour ceux qui ont des menus XML
private Context lecontext=this;
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.ID_DE_L_ITEM:
Intent intent = new Intent(portefeuille.this, accounts.class);
startActivity(intent);
return true;
}
return false;
}
Pour ceux qui ont des menus XML
private Context lecontext=this;
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.ID_DE_L_ITEM:
Intent intent = new Intent(lecontext, accounts.class);
startActivity(intent);
return true;
}
return false;
}
@Roromix merci de ce complément
De rien Guy. Si tu peux supprimer le premier commentaire que j’ai mit aussi
Bonjour à vous,
Je voudrais savoir s’il était possible (comme sur iphone) de proposer à l’utilisateur de modifier certains réglages en dehors de l’application via le menu réglage du TELEPHONE directement par exemple.
Je ne sais pas trop comment m’expliquer mais je vais quand même essayer et je ne sais surtout pas quoi chercher sur google.
En fait je voudrais en plus de mon application, ajouter dans le menu de réglage du téléphone (là où on règle l’affichage et tout) un sous menu pour que l’utilisateur règle certaines choses en dehors de l’application en elle même.
J’ai pas d’exemple sur téléphone Android mais pour Iphone, l’appli Facebook propose dans le menu réglage de l’Iphone si l’utilisateur veut recevoir des notifications (sur Android c’est directement dans l’appli mais c’est pas ce que je veux).
En image (toujours sur l’Iphone) : http://blog.nicolasgut.com/wp-content/uploads/2009/04/reglage1.jpg
Les sous-menus 20 minutes, Le monde … n’étaient bien entendu pas là à l’origine et ont été ajoutés au moment de l’installation des applis correspondantes. Je voudrais pouvoir faire la même chose sur Android.
Je sais pas si je suis clair ! :s Je sais pas trop quoi chercher sur Google donc si quelqu’un avait une idée et voulais bien m’aider.
Merci d’avance à vous.