Home » Android » Android ActionBar Recreate Options Menu

Android ActionBar Recreate Options Menu

Posted by: admin May 14, 2020 Leave a comment


When using the ActionBar in Android, how do you refresh the options menu? I have tried hiding and showing the bar, along with getting a new instance of it with “getSupportActionBar()”

I am trying to implement a Login/Logout button that will change dynamically based on the state of the user.

Here is my onCreateOptionsMenu method

public boolean onCreateOptionsMenu(Menu menu) {
    if (loggedIn)
        menu.add(0, MENU2, 0, "Logout").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        menu.add(0, MENU2, 0, "Login").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    menu.add(0, MENU1, 0, "Home").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
    return super.onCreateOptionsMenu(menu);


How to&Answers:

Invalidate the menu with invalidateOptionsMenu() and then put your code in the onPrepareOptionsMenu area.


In your FragmentActivity call invalidateOptionsMenu()

This is also a public method, so if you want to refresh it from a fragment call getActivity().invalidateOptionsMenu()

BTW, if you’re using SherlockActionBar you’ll need to call getSherlockActivity().invalidateOptionsMenu()
from the fragment, or you’ll get an exception.



requires API level 11…

for lower API use: