Android: How to recreate Action bar when fragment changed

android, android-actionbar, swipe

Solution

You can ask android to re-create the actionbar before it automatically does by calling `invalidateOptionsMenu();`

Do this somewhere close to the point where you change fragments to try and decrease the 'lag' between the fragment and actionbar changing.

Edit

a complete solution may look like this:

class activity extends Activity{

private void switchFragment(){

...do fragment changing stuff

activity.invalidateOptionsMenu();

}

}

class someFragment extends Fragment{

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater)
{
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();


    //fragment specific menu creation
}

}

whichever fragment is open during the

activity.invalidateOptionsMenu();

will then call its

 onCreateOptionsMenu

and you can do fragment specific menu creation in there

Problem

I have an activity showing a few fragments. Activity view contains only ViewPager initialized with custom FragmentPagerAdapter. This adapter provide navigation among 3 fragments. All seems to work fine except Action bar. I override onCreateOptionsMenu() method in my fragments to create individual Action bar for any fragment: ``` @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.clear(); //fragment specific menu creation } ``` When I do swipe, new fragment appears, but Action bar stay the same for a few seconds. Probably after a few seconds this method are called and Action bar get changed. This looks pretty bad when action bar are changed in a while after swipe is finished. How can I recreate action bar immediately, before swipe begin?

Original source

Related problems