web-dev-qa-db-fra.com

Implémenter un menu d'options dans Android Studio

Comment puis-je implémenter un menu d'options dans mon Android? J'ai essayé le code de développeur Android mais j'obtiens des erreurs. Telles que celles-ci: Le menu élément doit être déclaré . Voici mon code

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
    Android:icon="@drawable/ic_new_game"
    Android:title="@string/new_game"
    Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
    Android:icon="@drawable/ic_help"
    Android:title="@string/help" />
</menu>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.lucavanraalte.test" >

<application
    Android:allowBackup="true"
    Android:icon="@mipmap/ic_launcher"
    Android:label="@string/app_name"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme" >

    <activity Android:name=".MainActivity" Android:screenOrientation="portrait">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>
</application>

</manifest>

enter image description here

10
Lucafraser

Dans votre Java Java, ajoutez ce onCreateOptionsMenu pour afficher l'optionMenu,

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.option_menu, menu); //your file name
        return super.onCreateOptionsMenu(menu);
    }

Gardez votre dossier sous res\menu\option_menu,

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
    Android:icon="@drawable/ic_new_game"
    Android:title="@string/new_game"
    Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
    Android:icon="@drawable/ic_help"
    Android:title="@string/help" />
</menu>

Maintenant, si vous voulez définir onOptionsItemSelected c'est-à-dire l'événement onClick pour que vous puissiez utiliser,

@Override
    public boolean onOptionsItemSelected(final MenuItem item) {

        switch (item.getItemId()) {
            case Android.R.id.new_game:
                //your code
                // EX : call intent if you want to swich to other activity 
                return true;
            case R.id.help:
                //your code
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
21
Amit Vaghela

Vous devez utiliser onCreateOptionsMenu (Menu menu)

Initialisez le contenu du menu d'options standard de l'activité. Vous devez placer vos éléments de menu dans le menu.

Ceci n'est appelé qu'une seule fois, la première fois que le menu d'options s'affiche. Pour mettre à jour le menu chaque fois qu'il est affiché, voir onPrepareOptionsMenu (Menu).

onCreateOptionsMenu (menu Menu) méthode qui doit remplacer dans la classe Activity. Cela crée un menu et renvoie une valeur booléenne. gonfler gonfle une hiérarchie de menus à partir d'une ressource XML.

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.option_menu, menu); // set your file name
        return super.onCreateOptionsMenu(menu);
    }

Votre option_menu.xml

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@+id/item_First" 
          Android:title="@string/item_First"
          Android:showAsAction="ifRoom"/>
    <item Android:id="@+id/save_menu" 
          Android:title="@string/save"
          Android:showAsAction="ifRoom"/>
    <item Android:id="@+id/item_Second"
          Android:title="@string/item_First"
          Android:showAsAction="ifRoom"/>

</menu> 

Veuillez vérifier la démo Exemple de menu d'options Android

3
IntelliJ Amiya

Vous devez créer un menu.xml dans le répertoire res-> menu comme menu

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
Android:icon="@drawable/ic_new_game"
Android:title="@string/new_game"
Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
Android:icon="@drawable/ic_help"
Android:title="@string/help" />
</menu>

Ensuite, vous devez créer votre menu à partir de l'activité avec le code ci-dessous

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();
    if (id == R.id.help) {

       //do something
       return true;
    }
    if (id == R.id.new_game) {

       //do something
       return true;
    }
    return super.onOptionsItemSelected(item);
}
1
Zahan Safallwa

Vous devez créer un dossier menu dans le répertoire res et dans le répertoire de menu créer un fichier nommé my_menu.xml. Dans ce fichier, écrivez ces lignes:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:id="@+id/new_game"
    Android:icon="@drawable/ic_new_game"
    Android:title="@string/new_game"
    Android:showAsAction="ifRoom"/>
<item Android:id="@+id/help"
    Android:icon="@drawable/ic_help"
    Android:title="@string/help" />
</menu>

Ensuite, dans votre activité, procédez comme suit:

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