반응형
Activity 안에는 onPrepareOptionMenu 라는 메소드가 존재합니다. 이 메소드는 옵션 메뉴가 호출되어 화면에 보여질때 준비하는 메소드입니다. 그러므로 보여주기 직전 입니다.
이곳에서 수정하면 원하는 조건에 원하는 메뉴를 출력할 수 있습니다.
public boolean onPrepareOptionsMenu(Menu menu){ menu.clear(); if(조건1) new MenuInflater(this).inflate(R.menu.A, menu); else if(조건2) new MenuInflater(this).inflate(R.menu.B, menu); else new MenuInflater(this).inflate(R.menu.C, menu); return super.onPrepareOptionsMenu(menu); }조건1, 2에는 출력을 원하는 메뉴의 조건을 써주시면 됩니다.
menu.clear() 을 하는 이유는... 안해주면 기존에 onCreateOptionMenu 에 의해 생성된 메뉴 또는 onPrepareOptionMenu에서 생성된 메뉴가 누적되게 됩니다. 그럼 같은 메뉴가 2개 이상 생기게 됩니다. 이런 현상을 막기 위해 메뉴가 변경되면 clear를 통해 모든 메뉴를 지워줍니다.
inflate 를 이용안하고 직접 menu의 메소드를 호출하여 MenuItem 을 추가할 수 있습니다.
반응형
'Programming > Android' 카테고리의 다른 글
Custom ListPreference #3 - onPrepareDialogBuilder (0) | 2011.01.21 |
---|---|
16진수 색상(#FFFFFF) 를 int형 color 값으로 변환하자! (0) | 2011.01.21 |
Custom ListPreference #2 - onCreateDialogView (0) | 2011.01.14 |
Custom ListPreference #1 (0) | 2011.01.14 |
구글마켓, 티스토어, 오즈스토어 등록시 필요한 앱이미지 (0) | 2011.01.11 |