2012-08-23 18 views
9

Podczas korzystania z paska przycisków w Androidzie, jak odświeżyć menu opcji? Próbowałem ukrywać i wyświetlać pasek, a także nowe wystąpienie go z "getSupportActionBar()"Android ActionBar Odtwórz menu opcji

Próbuję wprowadzić przycisk logowania/wylogowania, który zmieni się dynamicznie w zależności od stanu użytkownika.

Oto moja metoda onCreateOptionsMenu

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    if (loggedIn) 
     menu.add(0, MENU2, 0, "Logout").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
    else 
     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); 
} 

Dzięki!

+0

możliwym duplikatu [odświeżanie pasku akcji w Androidzie 3.0] (http://stackoverflow.com/ pytania/6602534/odświeżający pasek akcji w Androidzie 3-0) – CommonsWare

+0

Pytanie ogólne - Co to jest etykieta Stackoverflow do wybierania najlepszej odpowiedzi, gdy dwie odpowiedzi są takie same i odpowiada w przybliżeniu w tym samym czasie, co dobrze? –

+0

Lepsze odpowiedzi (więcej szczegółów, przykłady kodu, linki itp.) Zapewniają szybsze odpowiedzi. W przypadku odpowiedzi o równoważnej wartości w obu obszarach ... obrócić monetę? – CommonsWare

Odpowiedz

11

w wywołaniu FragmentActivity invalidateOptionsMenu()

Jest to również metoda publiczna, więc jeśli chcesz odświeżyć ją z połączenia fragmentów getActivity().invalidateOptionsMenu()

BTW, jeśli używasz SherlockActionBar trzeba zadzwonić getSherlockActivity().invalidateOptionsMenu() z tego fragmentu, inaczej uzyskasz wyjątek.

7
invalidateOptionsMenu() 

wymaga poziom API 11 ...

dla mniejszego wykorzystania API:

supportInvalidateOptionsMenu() 
Powiązane problemy