Contrôle dynamique des éléments d'action / menu dans ActionBar

Existe-t-il un moyen de désactiver, masquer, ajouter / supprimer des éléments de menu dynamiquement dans ActionBar? Par exemple, une action est désactivée jusqu'à ce que l'utilisateur remplisse un numéro de téléphone valide dans une activité.

Je n'ai trouvé aucune méthode utile dans ActionBar API, la seule façon semble utiliser une vue personnalisée dans ActionBar.

  • Appcompat_v7: Erreur lors de la récupération du parent pour l'élément: Aucune ressource trouvée qui correspond au prénom
  • Usage Android "Best Practice" des intouts
  • Vérifiez si le service Google Play disponible est disponible: "Malheureusement, l'application a cessé de fonctionner"
  • Android Studio: Gradle Product Flavors: Définissez des propriétés personnalisées
  • Comment exactement l'android: l'attribut onClick XML diffère de setOnClickListener?
  • Comment sécuriser les préférences partagées d'Android?
  • Enregistrement et annulation de BroadcastReceiver dans un fragment
  • Problème lors de la réception de la notification push sur le client GCM
  • Liste des états éloignés et désactivés
  • Ouvrez un clavier numérique sans forcer le EditText à être uniquement numérique
  • SplashScreen with Vector streched full screen
  • Le fournisseur de contenu est-il une implémentation de Repository Pattern?
  • 2 Solutions collect form web for “Contrôle dynamique des éléments d'action / menu dans ActionBar”

    Pour indiquer à ActionBar de rafraîchir ses éléments de menu: invalidateOptionsMenu ()

    Puis pour activer / désactiver les éléments de menu:

    @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item= menu.findItem(R.id.men_1); //depending on your conditions, either enable/disable item.setEnabled(false); super.onPrepareOptionsMenu(menu); return true; } 

    Et pour cacher la barre d'action que vous avez:

     getActionBar().hide(); 

    Une autre option: avoir un champ dans l'activité qui stocke le menu. De cette façon, il est possible d'appeler getMenuInflater (). Inflate () et menu.clear () de n'importe où dans cette activité

    Donc, cela ressemble à ceci:

     class MyActivity extends ActionBarActivity { Menu actionBar; @Override public boolean onCreateOptionsMenu(Menu menu) { actionBar = menu; return true; } //Possible usage void showActionBar1 () { getMenuInflater().inflate(R.menu.menu_1, actionBar); actionBar.findItem(R.id.menu_1_btn_1).setOnMenuItemClickListener(); } void showActionBar2 () { getMenuInflater().inflate(R.menu.menu_2, actionBar); ... } void clearActionBar () { if (actionBar != null) actionBar.clear(); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.