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

12,206

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.

Share:
12,206
android developer
Author by

android developer

Really like to develop Android apps & libraries on my spare time. Github website: https://github.com/AndroidDeveloperLB/ My spare time apps: https://play.google.com/store/apps/developer?id=AndroidDeveloperLB

Updated on June 04, 2022

Comments

  • android developer
    android developer almost 2 years

    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.

  • android developer
    android developer almost 12 years
    won't it mean that it will be re-created each time you show the menu , as opposed to onCreateOptionsMenu ?
  • Shankar Agarwal
    Shankar Agarwal almost 12 years
    yeah it will be recreated and you stated it( i would prefer to re-create the menu)
  • Shankar Agarwal
    Shankar Agarwal almost 12 years
    Or you can have single xml and setVisiblity of each menu itenm to true or false as required. refer this stackoverflow.com/questions/9030268/…
  • android developer
    android developer almost 12 years
    is it possible to avoid re-creating the menu each time the end user is showing it? does it even matter much
  • android developer
    android developer almost 12 years
    you got my vote . thanks. if you know of a way to avoid re-creation of the menu, please tell me.