2011-10-05 4 views
27

Activities은 분명합니다. 메뉴가 표시되기 전에 메서드가 호출되고 있습니다. 그러나 일 때 ActionBar은 언제나으로 표시됩니까? menuItems을 동적으로 업데이트하기 위해 호출하도록 트리거하는 방법은 무엇입니까?ActionBar에 대해 onPrepareOptionsMenu() 메서드가 언제 그리고 얼마나 자주 호출됩니까?

+0

onPrepareOptionsMenu() 메서드를 사용하면 항목을 효율적으로 활성화/비활성화하거나 동적으로 내용을 수정할 수 있습니다. – Nepster

답변

53

invalidateOptionsMenu()를 사용하면 문서에서 제안하는대로 onPrepareOptionMenu() 메서드를 트리거 할 수 있습니다.

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

ActionBarSherlock을 사용하는 경우 activity 메서드를 사용할 수 있습니다. supportInvalidateOptionsMenu(); Fragment에있는 경우 getActivity()를 호출하십시오 .supportInvalidateOptionsMenu(); 대신에 – edrian

0

참고하여 최소 SDK 버전은 허니 콤보다 작은 경우 (일명 안드로이드 3.0 일명 API 레벨 11), 그리고 당신이 invalidateOptionsMenu의 지원 라이브러리 버전입니다 supportInvalidateOptionsMenu() 를 (호출 할 수 있습니다 ActionBarActivity를 사용하는).

onCreate()에 들어오는 의도에 따라 메뉴가 변경된 경우 나중에 inactivateOptionsMenu를 호출해야하는 활동주기에서 메뉴를 동적으로 변경하면 onPrepareOptionMenu()에서 업데이트를 수행 할 수 있습니다. 또는 supportInvalidateOptionsMenu를 사용하십시오.

관련 문제