7

안드로이드에서 옵션 메뉴 (메뉴 버튼을 누르면 표시되는 메뉴)를 변경할 수 있어야합니다. 따라서 한 경우 (예 : 버튼을 누르면) 메뉴에 대한 특정 메뉴 리소스 (/ res/menu/...와 같은 XML 파일)를 사용하고 다른 경우에는 다른 XML 파일을 사용합니다.android - 옵션 메뉴를 동적으로 바꾸지 만 XML에서 부풀려서

지금까지 xml (예 : herehere)없이이 작업을 수행 한 예제 만 보았지만 제대로 작동했지만 일부 경우 전체 메뉴를 변경할 수 있기를 원했습니다. 발견 한 솔루션을 수정하려했지만 시도한 것이 없습니다.

가능한 경우 현재 메뉴 리소스와 다른 메뉴 리소스로 업데이트해야하는 경우에만 메뉴를 다시 만드는 것이 좋습니다.

도와주세요.

답변

16

옵션 메뉴를 처음 생성 한 후 언제든지 변경하려면 onPrepareOptionsMenu() 메서드를 재정의해야합니다.

public boolean onPrepareOptionsMenu (Menu menu) {  
    menu.clear();  
    if (CASE_1 == 0) { 
     CASE_1 = 1; 
     getMenuInflater().inflate(R.menu.secondmenu, menu); 
    } 
    else { 
     CASE_1 = 0; 
     getMenuInflater().inflate(R.menu.firstmenu, menu); 
    }  
    return super.onPrepareOptionsMenu(menu); 
} 

여기서 CASE_1은 요구 사항에 따라 표시 할 메뉴를 나타냅니다.

+0

onCreateOptionsMenu와 달리 메뉴를 표시 할 때마다 다시 만들어 질 것이라는 의미가 아닙니까? –

+0

그래, 다시 만들 것입니다 그리고 당신은 (나는 메뉴를 다시 만드는 것을 선호합니다) –

+2

또는 필요에 따라 true 또는 false로 각 메뉴 itenm의 단일 xml 및 setVisiblity를 가질 수 있습니다. 이것을 참조하십시오 http://stackoverflow.com/questions/9030268/set-visibility-in-menu-programatically-android –