How to hide menu item in android action bar?
24,069
Solution 1
You can get a reference to the menu items which you would like to hide and show in onCreateOptionsMenu
and then make one visible and the other invisible inside onOptionsItemSelected
:
private MenuItem itemToHide;
private MenuItem itemToShow;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
itemToHide = menu.findItem(R.id.item_to_hide);
itemToShow = menu.findItem(R.id.item_to_show);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_next:
// hide the menu item
itemToHide.setVisible(false);
// show the menu item
itemToShow.setVisible(true);
return true;
}
return super.onOptionsItemSelected(item);
}
Solution 2
You are overriding the wrong function.
use this:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu, menu);
MenuItem item = menu.findItem(R.id.action_next);
item.setVisible(false); //hide it
super.onCreateOptionsMenu(menu, inflater);
}
Author by
Maros1515
Updated on March 20, 2020Comments
-
Maros1515 about 4 years
My goal is to hide one of the menu items in the action bar and show another after clicking on menu item. In my application, i am using
Toolbar
. I have already looked for many other questions and did not find what I needed. Any help will be appreciated. I tried code below, but this crashes app after click.public boolean onOptionsItemSelected(MenuItem item) { final SwipeRefreshLayout mySwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefresh); switch (item.getItemId()) { case R.id.action_next: //code MenuItem secondItem = (MenuItem) findViewById(R.id.action_next); secondItem.setVisible(false); return true; case R.id.action_previous: //code return true; default: return super.onOptionsItemSelected(item); } }
-
Maros1515 about 7 yearsThanks, i did not notice that.