2012-04-24 1 views
34

나는 OptionsMenu으로 애플리케이션을 생성합니다. 나는 그걸로 몇 가지 예제를 발견했지만 모두 super.onCreateOptionMenu()onCreateOptionsMenu() 메서드에 전화를 다른 장소를 사용하고 있습니다. 다른 방법의onCreateOptionsMenu() super

목록 :

@Override // without super 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return true; 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.mymenu, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

어떻게 사용해야합니까?

답변

29

당신이하고 싶은 일에 달려 있습니다. 첫 번째 예는 메뉴와 메뉴 만 배치합니다. 두 번째는 첫 번째 수퍼 클래스 메뉴를 추가합니다. 마지막으로 메뉴가 먼저 추가됩니다. 그러나 메뉴에는 렌더링시 고려할 주문 필드가 있습니다.

이미 메뉴가있는 활동을 확장했지만 그 메뉴를 표시하지 않으려면 다른 메뉴를 표시한다고 가정 해 보겠습니다. 이 경우 첫 번째 접근 방식을 사용합니다.

다른 예 : 메뉴가있는 활동을 확장하면서 다른 메뉴를 추가하려고합니다. 이 경우 두 번째 또는 마지막 접근 방식을 사용할 수 있습니다. 다음과 같이 onCreateOptionsMenu()에 대한

3

소스는 다음과 같습니다 mParent 현재 활동의 부모 활동이다

public boolean onCreateOptionsMenu(Menu menu) { 
    if (mParent != null) { 
     return mParent.onCreateOptionsMenu(menu); 
    } 
    return true; 
} 

. 액티비티가 android.app.Activity으로 확장 된 경우 끝에 true을 반환 할 수 있으며 super을 호출하는 것에 대해 걱정할 필요가 없습니다. 기본 구현에서는 상위 액티비티를 기반으로 메뉴를 표시하려고 시도합니다.