2014-06-12 2 views
0

J'ai une activité de base. Je gonfle les éléments de la barre d'action de l'activité de base. Maintenant, dans mon activité principale, qui étend l'activité de base, je remplace les fragments. Ainsi, en remplaçant, je cache l'icône de rafraîchissement et l'icône de partage. Mais l'icône de partage est affichée avant le chargement du 2ème fragment. Une fois que le deuxième fragment est affiché, l'icône de partage est de nouveau masquer, Pourquoi alors .. Voici ce que j'ai essayé.Masquer quelques éléments de la barre d'action

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    mMenu = menu; 
    return super.onCreateOptionsMenu(menu); 

} 

private void showOption(int id) { 
    MenuItem item = mMenu.findItem(id); 
    item.setVisible(true); 
} 

private void hideOption(int id) { 
    MenuItem item = mMenu.findItem(id); 
    item.setVisible(false); 
} 

Méthodes de masquage et d'affichage des icônes ...

en remplaçant le fragment, je fais ceci:

replaceFragment(mDetailFragment); 
      showOption(R.id.action_share); 
      hideOption(R.id.action_refresh); 
+0

utilisation setVisibiltiy (View.Gone) pour cacher –

+0

Pouvez-vous ajouter 'invalidateOptionsMenu();' 'après hideOption (R.id. action_refresh); 'et voir si cela fonctionne? – makata

+0

Okay .. Je vais essayer et laissez-vous savoir – user3698989

Répondre

1

Vous devez parcourir chaque élément de menu de votre référence de menu pour changer leur propriété.

Menu mMenu ; 
@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
     mMenu = menu; 
     return super.onCreateOptionsMenu(menu); 
} 

private boolean changeVisibility(int menuId, boolean visibility) { 
    for (int i = 0; i < menu.size(); i++) { 
     if (mMenu .getItem(i).getItemId() == menuId) { 
      mMenu .getItem(i).setVisible(visibility); 
     } 
    }  
} 

ensuite l'utiliser où dans l'activité:

replaceFragment(mDetailFragment); 
changeVisibility(R.id.action_share, true); 
changeVisibility(R.id.action_refresh, false); 
+0

Mais je dois remplacer les éléments de la barre d'action, tout en remplaçant les fragments .. Si j'écris cette méthode dans l'activité, il sera appelé au début lui-même droite? – user3698989

+0

@ user3698989, je l'ai mis à jour. – makata

+0

Pourquoi nous avons besoin de itérer..Pourquoi cela ne fonctionne pas, si nous donnons directement..Je sais son idiot..Mais je suis un débutant..suis donc coopérer – user3698989

Questions connexes