2011-10-05 10 views
27

Jest to jasne dla Activities - metoda jest wywoływana tuż przed wyświetleniem menu. Ale co z ActionBar, gdy jest zawsze wyświetlane? Jak wyzwolić go, aby był wywoływany, aby dynamicznie aktualizować menuItems?Kiedy i jak często wywoływana jest metodaPrepareOptionsMenu() w ActionBar?

+0

Można użyć metody onPrepareOptionsMenu() w celu wydajnego włączania/wyłączania elementów lub w inny sposób dynamicznej modyfikacji zawartości. – Nepster

Odpowiedz

53

Użyj metody invalidateOptionsMenu(), aby uruchomić metodę onPrepareOptionMenu() zgodnie z sugestią dokumentu.

On Android 3.0 and higher, you must call invalidateOptionsMenu() when you want to update the menu, because the menu is always open. The system will then call onPrepareOptionsMenu() so you can update the menu items.

+0

Jeśli używasz ActionBarSherlock, możesz użyć metody aktywności: supportInvalidateOptionsMenu(); Jeśli jesteś w Fragmentie, wywołaj getActivity(). SupportInvalidateOptionsMenu(); zamiast – edrian

0

Uwaga Jeśli wersja min SDK jest mniej niż Honeycomb (aka Android 3.0 aka poziom API 11), a używasz ActionBarActivity można nazwać supportInvalidateOptionsMenu() który jest wersją biblioteki wsparciu invalidateOptionsMenu ().

Jeśli twoje menu zmienia się w zależności od intencji przychodzących do onCreate(), możesz po prostu wykonać aktualizacje w onPrepareOptionMenu(), jeśli dynamicznie zmienisz menu w późniejszym etapie cyklu życia aktywności będziesz musiał wywołać invalideOptionsMenu, lub supportInvalidateOptionsMenu w zależności od twoich min i docelowych wersji sdk.

Powiązane problemy