2016-10-10 1 views
1

Selon les critères arbitraires que je décide, est-il possible de changer le contenu du Menu (le point triple-clic que vous cliquez dans le coin supérieur droit, qui descend les paramètres que vous souhaitez inclure).Est-il possible de changer le menu en temps réel?

Est-ce que cela peut être fait? En ce moment, je ne sais pas comment parce que je vois des lignes comme ceci:

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

et je ne sais pas si je peux « re-gonfler » le menu en temps réel/modifier les options/etc

+2

avez-vous lu [Modification des éléments de menu à l'exécution] (https://developer.android.com/guide/topics/ui/menus.html#ChangingTheMenu) à partir des documents Android? –

Répondre

1

thats la façon dont je le fais:

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
     if(condition1){ 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.menu_1, menu); 
     }else{ 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.menu_2, menu); 
     } 
     return super.onPrepareOptionsMenu(menu); 
} 
1

Oui, you can. L'idée principale est que vous obtenez l'instance de MenuInflater via getMenuInflater() puis gonflez votre menu XML. Il n'est pas limité sur votre activité/fragment onCreateOptionsMenu() ou onPrepareOptionsMenu().

De plus, il n'est pas nécessaire de le masquer dans le menu triple point ou le menu de débordement. Il y a une configuration pour quand vous voulez qu'il soit caché dans le menu de débordement ou montré tout le temps par showAsAction.