Android Créer un menu dans une activité


Exemple


Pour définir votre propre menu, créez un fichier XML dans le répertoire res/menu/ votre projet et créez le menu avec les éléments suivants:

  • <menu> : définit un menu contenant tous les éléments du menu.
  • <item> : crée un MenuItem, qui représente un seul élément dans un menu. Nous pouvons également créer un élément imbriqué afin de créer un sous-menu.

Étape 1:

Créez votre propre fichier xml comme suit:

Dans res/menu/main_menu.xml :

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/aboutMenu"
        android:title="About" />
    <item
        android:id="@+id/helpMenu"
        android:title="Help" />
    <item
        android:id="@+id/signOutMenu"
        android:title="Sign Out" />
</menu>

Étape 2:

Pour spécifier le menu d'options, remplacez onCreateOptionsMenu() dans votre activité .

Dans cette méthode, vous pouvez gonfler votre ressource de menu (définie dans votre fichier XML, à savoir res/menu/main_menu.xml )

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

Lorsque l'utilisateur sélectionne un élément dans le menu d'options, le système appelle la méthode onOptionsItemSelected() votre activité .

  • Cette méthode passe le menuItem sélectionné.
  • Vous pouvez identifier l'élément en appelant getItemId() , qui renvoie l'identifiant unique de l'élément de menu (défini par l' android:id attribute dans la ressource de menu - res/menu/main_menu.xml ) * /
 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.aboutMenu:
            Log.d(TAG, "Clicked on About!");
            // Code for About goes here
            return true;
        case R.id.helpMenu:
            Log.d(TAG, "Clicked on Help!");
            // Code for Help goes here
            return true;
        case R.id.signOutMenu:
            Log.d(TAG, "Clicked on Sign Out!");
            // SignOut method call goes here
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Emballer!

Votre code d' Activity devrait ressembler à ceci:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "mytag";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.aboutMenu:
                Log.d(TAG, "Clicked on About!");
                // Code for About goes here
                return true;
            case R.id.helpMenu:
                Log.d(TAG, "Clicked on Help!");
                // Code for Help goes here
                return true;
            case R.id.signOutMenu:
                Log.d(TAG, "User signed out");
                // SignOut method call goes here
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

Capture d'écran de l'apparence de votre propre menu:

SampleMenuApp