I have looked through the questions on stack overflow and can't find the solution.
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.themenu, menu);
MenuItem item = menu.findItem(R.id.menu_settings);
MenuItem item2 = menu.findItem(R.id.menu_save);
item.setVisible(isdown);
item2.setVisible(isdown);
return true;
}
This sets my menu items to visible (item1 and item2). the onclick works fine
public void inflateTextarea() {
if(isdown == true) {
isdown = false;
LinearLayout tl = (LinearLayout)findViewById(R.id.content);
tl.setVisibility(View.VISIBLE);
ScaleAnimation scale = new ScaleAnimation(1, 1, 0, 1);
scale.setFillAfter(true);
scale.setDuration(500);
tl.startAnimation(scale);
}
}
Then this sets my isdown boolean to false. on stack people say that the onPrepareOptionsMenu should fire everytime I click but this is not the case. I am able to hide one menu item on the onclick function
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_settings:
Log.v("Log:","edit_item pressed");
return true;
}
}
But I have multiple menu items that I need to hide and others that I want to show. how can I go about this?
Try this,
When you want to hide menu at any where, after executing
onCreateOptionsMenu()
then just change value forisdown
and repeat this code,Try this in your FragmentActivity
Method FragmentActivity.onPreparePanel creates menu for all attached fragments. You must return true for the menu to be displayed; if you return false it will not be shown.
I have a menu with two items, first: save item, second: edit item. I wanted when I came in to edit, at first "save item" had been hidden, and when I click "edit item", "save item" was shown.
So:
onCreateOptionsMenu(Menu menu, MenuInflater inflater)
isHidden()
isVisible()
Public region:
onCreateOptionsMenu:
Where i want:
Finally it works as I wanted.
Its not enough to change the
isDown
variable. You have to call thesetVisible()
method every time you want to change the visibility. That method does more than just setting a boolean value, so just changing a boolean value will not do.After changing the
isDown
value to false, you need to callinvalidateOptionsMenu()
which will re-launch the menu by callingonPrepareOptionsMenu()
again.Try this code for making the menu items unvisible: