J'essaie de cacher/montrer menuItem mais obtenir NPE. Cela fonctionne dans onPrepareOptionsMenu mais pas dans onCreate. Par défaut, il devrait être invisible.Android MenuItem setVisible
par exemple. dans onCreate mon fragment je voudrais faire quelque chose comme:
if (condition) menuItem.setvisible(true);
mais ça me fait NPE sur cette ligneMenu.
Activité
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.inventory_list_toolbar, menu);
return true;
}
@Override
protected void onCreate(final Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start_inventory);
mToolbar = findViewById(R.id.inventory_list_toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);
}
Fragment:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public void onPrepareOptionsMenu(Menu menu){
super.onPrepareOptionsMenu(menu);
menuItem = menu.findItem(R.id.inventory_list_menu_add);
menuItem.setVisible(false);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
Veuillez ajouter quelques explications à votre réponse. – ivaigult
Déclare Menu menu; ' Puis l'initialiser comme @Override public boolean onCreateOptionsMenu (menu Menu) { // Inflate le menu; Cela ajoute des éléments à la barre d'action si elle est présente. this.menu = menu; getMenuInflater(). Gonfle (R.menu.main, menu); renvoyer true; } Lorsque vous souhaitez masquer/afficher le menu, utilisez if (menu! = Null) { MenuItem item_up = menu.findItem (R.id.action_up); item_up.setVisible (true); } –
@AkshayChopde: Modifier la réponse avec l'explication, ne pas l'ajouter comme un commentaire –