android - change options menu dynamically , but by inflating from XML

android, android-optionsmenu, dynamically-generated, resources, xml

Solution

If you want to change the Options Menu any time after it's first created, you must override the onPrepareOptionsMenu() method.

public boolean onPrepareOptionsMenu (Menu menu) {    
    menu.clear();    
    if (CASE_1 == 0) {
        CASE_1  = 1; 
        getMenuInflater().inflate(R.menu.secondmenu, menu);
    }
    else {
        CASE_1  = 0;
        getMenuInflater().inflate(R.menu.firstmenu, menu);
    }    
    return super.onPrepareOptionsMenu(menu);
}

where CASE_1 refer to the which menu you want to display depending on your requirement.

Problem

i need to be able to change the options menu (the one that is shown upon pressing the menu button) on android , so that on one case (for example upon a button being pressed) , it will use a specific menu resource (XML file as in /res/menu/... ) for the menu , and on another case , use a different XML file. so far i've seen only examples of doing it without xml (example here and here) , and they worked fine , but i want to be able to change the entire menu on some cases. i've tried to modify the solutions i've found , but none of my trials worked. if possible , i would prefer to re-create the menu only if the it needs to be updated with a menu resource that is different from the current one. please help me.

Original source

Related problems