2012-04-25 12 views

risposta

31

È possibile creare il menu in codice come questo:

/*************************************/ 
/* Create the actionbar options menu */ 
/*************************************/ 
@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    menu.add(0, 0, 0, "History").setIcon(R.drawable.ic_menu_recent_history) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 1, 0, "Settings").setIcon(R.drawable.ic_menu_manage) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    return true; 
} 

All'interno di controllo per un valore booleano.

È necessario chiamare supportInvalidateOptionsMenu() per ricreare il menu.

+0

Grazie. Funziona alla grande!! – hdoria

7

È possibile mantenere un flag che determina se è necessario visualizzare il pulsante

boolean hasRss = false; 

poi, l'override del metodo onCreateOptionsMenu (menu Menu) e verificare se hasRss è vera o falsa. Se è vero, aggiungi il tuo pulsante per fare qualsiasi cosa. Quindi è possibile aggiungere i normali pulsanti da mostrare sempre a prescindere se avete la RSS o no

@Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     if (hasRss) 
     { 
      menu.add(Menu.NONE, 0, Menu.NONE, "View RSS").setIcon(R.drawable.ic_menu_view) 
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
     } 

     menu.add(Menu.NONE, 1, Menu.NONE, "Normal button that is always there").setIcon(R.drawable.ic_menu_button) 
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    } 

si dovrà impostare il valore di hasRss = true ogni volta di recuperare i valori e chiamare invalidateOptionsMenu(); per ricaricare l'azione bar menu items

+0

Grazie. Funziona alla grande!! – hdoria

Problemi correlati