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);
    }
}
 
     
     
     
     
     
    