Bonjour
Je fais un menu avec item suivant
L'icone ne s'affiche pas, pouvez-vousme dire pourquoiCode:
1
2
3
4
5 <item android:title="Options" android:id="@+id/itemOptions" android:icon="@drawable/icon"> </item>
Merci pour vos réponses
JCM
Version imprimable
Bonjour
Je fais un menu avec item suivant
L'icone ne s'affiche pas, pouvez-vousme dire pourquoiCode:
1
2
3
4
5 <item android:title="Options" android:id="@+id/itemOptions" android:icon="@drawable/icon"> </item>
Merci pour vos réponses
JCM
Bonjour,
Il faut charger le menu dans le code de l'activity .
http://developer.android.com/guide/topics/ui/menus.html
Merci pour ta réponse
je l'ai fait avec ce code :
JCMCode:
1
2
3
4
5
6 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add("Options"); menu.add("Quitter"); return true; }
Ou plus simple
Code:
1
2
3
4
5
6
7 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.'ton_menu', menu); return true; }
Oui mais maintenant jai sur la ligne
inflater.inflate(R.menu.MonMenu, menu);
R.menu.MonMenu de surligné
Désolé mais je débute avec Android
JCM
La solution que Feanorin te propose te permet de définir ton menu dans un fichier xml :
http://developer.android.com/guide/t...menus.html#xml
puis de l'"inflater" :
http://developer.android.com/guide/t...html#Inflating
Merci d'effectuer un minimum de recherche, le lien est posté plus haut dans la discussion...
Je suis allé voir sur ces liens
mais je n'y comprend pas grand chose
c'est un peu hard pour un débutant et cela fait des heures que je me triture les méninges sans résultat
JCM
il faut juste que tu crée un fichier xml menu que tu placeras dans le dossier res/menu.
Appelle le "tonmenu.xml"
Reprends l'exemple que tu avais posté
Vérifie si ton image icon.png est bien présente dans ton dossier res/drawable .Code:
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Options" android:id="@+id/itemOptions" android:icon="@drawable/icon"> </item> </menu>
Ensuite il te suffit juste d'implementer ta procédure onCreateOptionsMenu dans l'Activity ou tu souhaite voir apparaitre ton menu . Il ne s'affichera que dans celle où tu auras implémenté le code ci dessous dans leur classe
R.menu.tonmenu -> reprèsente le nom du menu crée précédementCode:
1
2
3
4
5
6 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.tonmenu, menu); return true; }
R Ressource dossier res
menu dossier menu
tonmenu nom de ton fichier tonmenu.xml (le suffixe .xml n'est pas nécessaire dans les déclarations du code).
Merci pour ta réponse, mais j'ai toujours le même problème
J'ai créé TonMenu.xml dans Res/layout
DansMainNewMenu.java j'ai ce codeCode:
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:title="Options" android:id="@+id/itemOptions" android:icon="@drawable/icon"> </item> </menu>
Et dans R.javaCode:
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 package com.wtp.NewMenu; import android.app.Activity; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; public class mainNewMenu extends Activity { /** Called when the activity is first created. */ @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.TonMenu, menu); return true; } @Override public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()) { case R.id.itemOptions: Toast.makeText(this, "Ouverture des options", Toast.LENGTH_SHORT).show(); return true; case R.id.itemQuitter: finish(); return true; } return super.onMenuItemSelected(featureId, item); } }
L'erreur est sur cette ligne :Code:
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 /* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */ package com.wtp.NewMenu; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class id { public static final int MonMenu=0x7f050000; public static final int itemOptions=0x7f050001; public static final int itemQuitter=0x7f050002; } public static final class layout { public static final int main=0x7f030000; public static final int monmenu=0x7f030001; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } public static Object menu; }
inflater.inflate(R.menu.TonMenu, menu);
R.menu.TonMenu est surligne
JCM
Ce fichier doit se trouver dans Res/menu
Et pour vérifier si cela a été bien pris en compte tu dois avoir Tonmenu déclaré dans le fichier R.java comme ci-dessous.
N'hésite pas à faire un clean sur ton projet.
Code:
1
2
3 public static final class menu { public static final int Tonmenu=(sa valeur en hexa); }
Merci pour ta réponse
Mais je n'ai pas de menu dans res
j'ai les dossiers layout, value et les drawables
et le manifeste xml et default.properties
C'est quoi un clean ?
JCM
Pour la création du menu tu as deux possibilités,
1/ Click droit sur le dossier res de ton projet -> New -> Android File XML
Dans le Panel tu cliques sur le radiobutton Menu
Tu rentres le nom de ton menu soit Tonmenu.xml
et automatiquement tu auras le dossier menu crée avec le fichier menu
crée.
2/ Sinon tu peux créer le dossier menu dans res manuellement ainsi que le fichier.
Je te conseille de passer par le 1/
Pour faire un clean il faut aller dans Projet -> Clean
la tu choisis le nom de ton projet puis Ok
Cette fonctionnalité permet à Eclipse de remettre à jour R.java ainsi que toutes les dépendances de tes projets. Quand tu as des erreus sur le fichier R.java ou des incohérences suite à un rajout de code je te conseille de faire un clean .
Je te met un tuto
http://www.vogella.de/articles/Android/article.html
paragraphe 6
Bonjour,
En effectuant une recherche simple dans la documentation Android, on trouve pas mal de réponses :mouarf:
La gestion des ressources dans un projet Android :
http://d.android.com/guide/topics/re...resources.html
Comment gérer une ressource de type 'menu' :
http://d.android.com/guide/topics/re...-resource.html
Feanorin j'ai fait le tuto paragraphe 6
je n'ai aucune erreur
mais quand je lance le simulateur
je clic sur l'icone de l'appli
et j'ai un message qui dit que l'application n'est pas installée sur lesimulateur
Je ne peux pas t'aider qu'avec que ça.Citation:
et j'ai un message qui dit que l'application n'est pas installée sur lesimulateur
Mais nous ce que tu as dans le LogCat comme erreur.
PS : tu n'as pas besoin de refaire le Tuto , mais inspire toi juste du 6.1 et 6.2.
Enfin j'y suis arrivé, le code de menu.xml est le suivant :
Je voudrais ajouter une image à la place du titreCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/Voir" android:title="Voir"> </item> <item android:id="@+id/Jour" android:title="Jour"> </item> <item android:id="@+id/Base" android:title="Base"> </item> <item android:id="@+id/Chiffre" android:title="Chiffre"> </item> </menu>
Est-ce possible et ou dois-je mettre les images, j'avais créé un dossier drawable dans le res et cela me met en erreur
JCM
Pour avoir une image dans le menu ,
Met 'tonimage.jpg' drans le dossier drawable sous le dossier res
Code:
1
2
3 <item android:id="@+id/Voir" android:icon="@drawable/tonimage" // pas besoin de l'extension android:title="Voir">
Quand je mets mon image au format png dans un des reps drawable, j'ai ce message
[2010-11-16 14:29:18 - NewMenu] res\drawable-mdpi\Voir.png: Invalid file name: must contain only [a-z0-9_.]
et dans le main.java
sur cette ligne : setContentView(R.layout.main);
j'ai le R. de surligné
JCM
Pas de majuscule dans le nom des ressources
Citation:
Invalid file name: must contain only [a-z0-9_.]
Merci pour vos réponses, mes problèmes sont réglés.
Néanmoins je voudrais savoir s'il est possible :
mon menu a 4 items, ils s'affichent sur deux lignes
est-ce possible d'obtenir un affichage sur une seule ligne ?
JCM