I had a problem setting up some fragment menu items in the ActionBar and I found a way to solve it, but I don't understand why it worked.
I wanted to change the visibility in a menu item right after I inflated it from a menu xml file in onCreateOptionsMenu method. The code seems to work fine, but there's no visible effect. I solved the problem inflating the menu in onCreateOptionsMenu method but changing the visibility of it in onPrepareOptionsMenu method.
What I want to know is why changing the visibility in onCreateOptionsMenu does not work.
What can I do in onPrepareOptionsMenu that I can't do in onCreateOptionsMenu?
Is there any pattern to follow here?
Thanks!
Here's the relevant code, just in case:
public class MyFragment extends Fragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
// This does not work, compiles and runs fine, but has no visible effect
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// This does work
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
}