2011-11-10 3 views
3

내 응용 프로그램의 주요 활동은 TabActivity이며 OptionsMenu가 포함되어 있습니다. 다른 액티비티 (탭으로 이동)를 정의하고 각 액티비티에 메뉴를 정의하고 메뉴를 주 액티비티와 병합하고 싶습니다. 가능한가?포함 된 활동 메뉴가 포함 된 TabActivity 메뉴

+0

나는 때문에 가능한 생각하지 않는다 : 항목 선택을 처리하기 위해 내부 탭 활동은 여전히 ​​(당신이 선택한 옵션 탭 특정 아니라고 결정 후) 명시 적으로 부모의 활동에 대응하는 메소드를 호출해야 Tab 액티비티에서 하나의 액티비티에 안드로이드 포커스. 각 활동에 대한 메뉴를 주 메뉴로 병합하려면 그것의 말이되지 않습니다. 하지만 메인 액티비티에서 다른 액티비티 메뉴를 팽창시키고 기본 액티비티 메뉴에 다른 메뉴 옵션을 추가 할 수 있습니다. – Arslan

답변

9

네, 가능으로 설정할 수 있습니다. 기본적으로 여러 xml 파일을 동일한 옵션 메뉴로 확장합니다. 품목은 인플레이션 순서로 메뉴에 추가됩니다.

TabActivity에 대해 onCreateOptionsMenu(Menu menu)을 덮어 쓰면 주 옵션이 포함 된 xml 파일이 부 풀리게됩니다. 그런 다음 각 내부 탭 활동에 대해이를 덮어 쓰고 탭 관련 옵션을 부 풀립니다.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.options, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

메뉴는 현재 활성화 된 내부 탭 활동 '속', 그러나 그것을 채우기 위해, onCreateOptionsMenu 자동 (super가) 너무 부모 활동이라고 : 당신이 일반적으로처럼 그냥 그 물품.

그러나, 이상하게도 onMenuItemSelected(int featureId, MenuItem item)은 동일하지 않습니다.

return super.onMenuItemSelected(featureId, item) 
    || getParent().onMenuItemSelected(featureId, item); 
+0

나는 각 TabActivity에서 완전한 메뉴를 선언 할 것이라고 생각한다. :) –

+0

이제 호기심이 생겼다. 왜? :-) – mhelvens

+0

나는 잘 모르겠다. 나는 조금 너무 지저분하다고 느낀다. (하지만 이상한 느낌이 아닙니다.) –

1

메뉴를 동적으로 만들거나 별도의 XML로 만들지 않습니까?

동적 경우는

public void createMenu() 
{ 

//Main Menu here 

    switch(tab) 
    { 

     case '1': //add tab 1 menu 
     break; 
     case '2': //add tab 2 menu 
     break; 

    } 

} 
+0

별도의 XML로 작성합니다. 다른 옵션은 없지만 프로그래밍 방식으로 작성하는 데는 문제가 없지만 XML로 유지하는 것이 좋습니다. –

관련 문제