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()
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);
}
}
Appelez invalidateOptionsMenu () au lieu de passer un objet de menu.
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;
}
}
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.
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