본문 바로가기

Programming/Android

같은 Activity 안에서 상황에 따라 다른 OptionMenu를 보여주고 싶어요!

반응형

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 을 추가할 수 있습니다.
반응형