I. Menu et sous-menu▲
I-A. Début▲
Alors comme d'habitude créez un nouveau projet (moi j'ai utilisé Android 1.6), et direction le dossier layon, car l'interface graphique est, comme tout le temps créée grâce aux fichiers XML.
I-B. Le Code XML▲
Créez un fichier menu.xml dans le dossier layout. Nous allons créer un premier menu contenant les items Options et Quitter. Lorsqu'on cliquera sur Quitter , on sortira de l'application et lorsqu'on cliquera sur Options, on aura un sous-menu qui s'affichera avec les items Favoris et Stats.
Je vous propose donc le code suivant :
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/option"
android:title="Options"
android:icon="@drawable/option">
<menu android:id="@+id/sousmenu">
<item android:id="@+id/favoris"
android:title="Favoris" />
<item android:id="@+id/stats"
android:title="Stats" />
</menu>
</item>
<item android:id="@+id/quitter"
android:title="Quitter"
android:icon="@drawable/quit" />
</menu>Vous remarquerez que j'affecte une petite icône pour chaque item du menu, mais pas du sous-menu. Tout simplement parce que dans le sous-menu, les icônes ne sont pas supportées par Android (« Sub menus do not support item icons, or nested sub menus. » via). La partie XML est terminée (oui c'est court et simple, mais bon) ), passons désormais à la partie JAVA qui sera aussi courte et simple !
I-C. Le Code Java▲
Ci-dessous vous trouverez le code commenté.
package com.tutomobile.android.menu;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
public class Tutoriel10_Android extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
//Méthode qui se déclenchera lorsque vous appuierez sur le bouton menu du téléphone
public boolean onCreateOptionsMenu(Menu menu) {
//Création d'un MenuInflater qui va permettre d'instancier un Menu XML en un objet Menu
MenuInflater inflater = getMenuInflater();
//Instanciation du menu XML spécifier en un objet Menu
inflater.inflate(R.layout.menu, menu);
//Il n'est pas possible de modifier l'icône d'en-tête du sous-menu via le fichier XML on le fait donc en JAVA
menu.getItem(0).getSubMenu().setHeaderIcon(R.drawable.option_white);
return true;
}
//Méthode qui se déclenchera au clic sur un item
public boolean onOptionsItemSelected(MenuItem item) {
//On regarde quel item a été cliqué grâce à son id et on déclenche une action
switch (item.getItemId()) {
case R.id.option:
Toast.makeText(Tutoriel10_Android.this, "Option", Toast.LENGTH_SHORT).show();
return true;
case R.id.favoris:
Toast.makeText(Tutoriel10_Android.this, "Favoris", Toast.LENGTH_SHORT).show();
return true;
case R.id.stats:
Toast.makeText(Tutoriel10_Android.this, "Stats", Toast.LENGTH_SHORT).show();
return true;
case R.id.quitter:
//Pour fermer l'application il suffit de faire finish()
finish();
return true;
}
return false;}
}I-D. Résultat▲
Voilà, c'est aussi simple que ça ! Maintenant, lancez votre application et appuyez sur le bouton menu du téléphone vous devriez voir quelque chose comme ceci :

Si vous cliquez sur l'item « Options » le sous-menu s'affiche :

II. Remerciements▲
Je tiens à remercier tout particulièrement Feanorinhttp://www.developpez.net/forums/u35388/feanorin/ qui a mis ce tutoriel au format Developpez.com.
Merci également à Claude Lelouphttp://www.developpez.net/forums/u124512/claudeleloup/ d'avoir pris le temps de le relire et de le corriger.




