web-dev-qa-db-fra.com

Comment obtenir le menu d'options de mon activité?

Dans certaines méthodes de mon activité, je veux vérifier le titre du menu ou savoir s'il est coché ou non. Comment puis-je obtenir le menu des activités. J'ai besoin de quelque chose comme this.getMenu()

38
Bobs

Méfiez-vous de invalidateOptionsMenu(). Il recrée tout le menu. Cela a beaucoup de frais généraux et réinitialisera les composants intégrés comme le SearchView. Il m'a fallu un certain temps pour découvrir pourquoi mon SearchView se fermait "au hasard".

J'ai fini par capturer le menu tel que publié par Dark et ensuite appeler onPrepareOptionsMenu(Menu) si nécessaire. Cela a répondu à mes exigences sans effets secondaires désagréables. Gotcha: Assurez-vous de faire une vérification nulle au cas où vous appelez onPrepareOptionsMenu() avant que le menu ne soit créé. Je l'ai fait comme ci-dessous:

private Menu mOptionsMenu;

@Override
public boolean onCreateOptionsMenu(final Menu menu) {
    mOptionsMenu = menu
    ...
}

private void updateOptionsMenu() {
    if (mOptionsMenu != null) {
        onPrepareOptionsMenu(mOptionsMenu);
    }
}
110
Dustin

Appelez invalidateOptionsMenu () au lieu de passer un objet de menu.

30
Diwakar Bhatia

vous pouvez le faire en passant l'objet Menu à votre classe d'activité

public class MainActivity extends Activity
{
    ...
    ...
    private Menu _menu = null;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        _menu = menu;
        return true;
    }

    private Menu getMenu()
    {
        //use it like this
        return _menu;
    }
}
12
Dark

Pour autant que je puisse comprendre ce que vous voulez ici, cela peut vous aider:

1. Reportez-vous à ce tutoriel menu d'options .

2. Chaque fois que l'utilisateur appuie sur le bouton de menu, vous pouvez vérifier son titre via getTitle().

3. Ou si vous voulez connaître le dernier élément de menu vérifié ou sélectionné lorsque l'utilisateur n'a pas appuyé sur le bouton de menu, vous devez enregistrer les préférences lorsque l'utilisateur presses.

1
Vineet Shukla

Il existe plusieurs méthodes de rappel qui fournissent le menu comme paramètre.

Vous voudrez peut-être le manipuler là-bas.

Par exemple:

onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
onCreateOptionsMenu(Menu menu)
onCreatePanelMenu(int featureId, Menu menu)

Il y en a plusieurs autres, il vaut mieux jeter un œil à la documentation de l'activité et rechercher la méthode souhaitée: http://developer.Android.com/reference/Android/app/Activity.html

1
Ostkontentitan