2015-01-03 2 views
0

라고하는 순서에 QUES 나는 OptionsMenus 및 ActionsBars에 구글의 안드로이드 페이지의 도움말 섹션을 읽고 있었다 프래그먼트가 호출되기 전에 호출됩니다. 즉, 기본값을 포함시켜야합니다. onOptionsItemSelected 메소드 정의 끝 부분에 super.onOptionsItemSelected를 반환하십시오. 여기에는 다음 메소드 예제가 포함되어 있지만 이것이 활동 정의 또는 단편 정의 내에서 예제가 될 것이라는 것을 언급하지 않았습니다. 나는 이것에 대해 약간 혼란 스러웠고 명확성을 묻고 싶었다. "super"의 사용에 기반하여 그것은 프래그먼트 내부에서 Activity로 전달된다는 것을 암시하지만, 이것은 Activity가 먼저 호출된다는 그들의 진술과 일치하지 않습니다. 그것이 액티비티의 예제가되고 "슈퍼"가 부모 어플리케이션 클래스를 가리킨다면, 프래그먼트로 되돌아 오는 방식에 대해 명확하지 않습니다. 청산에 대한 모든 메모는 인정 될 것입니다. MyActivity 따라서 Activity를 확장하고 귀하의안드로이드 조각 옵션 메뉴가

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle presses on the action bar items 
    switch (item.getItemId()) { 
     case R.id.action_search: 
      openSearch(); 
      return true; 
     case R.id.action_compose: 
      composeMessage(); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
+0

활동 코드에 있어야합니다. 정보를 주셔서 감사합니다. – natario

+0

이 경우, "수퍼"가 여기서 말하는 것은 무엇입니까? – user3064141

답변

0

는 재정의 onOptionsItemSelected() 그 중 하나의 방법을 상속합니다.

super.whatever() 호출 : Activity 수퍼 클래스에서이 메서드 whatever()을 덮어 쓰고 싶지만 거기에 정의 된대로 메서드를 실행하십시오. 기본적으로, 당신은 그 방법에 무언가를 추가하고 있습니다. 예를 들어, 일반적으로 onCreate을 수행합니다.

이 경우에 false을 반환하면 ID가 언급 된 두 개와 다른 경우 완료됩니다. 메뉴 관리가 여기서 중단 될 수 있습니다. 분명히 우리는 조각이 그 부르심을 받기를 원하기 때문에 아닙니다.

그래서 액티비티는 슈퍼 클래스 메서드를 오버라이드하여 처음 두 메뉴 항목을 관리 한 다음 슈퍼 클래스 메서드를 호출하여 실행중인 항목을 유지하고 여기에 관리되지 않는 항목이있을 수 있습니다.