Programming/Android
같은 Activity 안에서 상황에 따라 다른 OptionMenu를 보여주고 싶어요!
초프(초보 프로그래머)
2011. 1. 19. 10:35
반응형
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 을 추가할 수 있습니다.
반응형