안드로이드 옵션메뉴 예제

Android 3.0(API 수준 11)부터 는 Android 기반 장치가 더 이상 전용 메뉴 단추를 제공할 필요가 없습니다. 이 변경으로 Android 앱은 기존 6항목 메뉴 패널에 대한 의존에서 벗어나 일반적인 사용자 작업을 표시하는 앱 막대를 제공해야 합니다. 사용자가 항목을 선택하거나 메뉴 영역 외부에서 터치하면 메뉴가 해제됩니다. PopupMenu.OnDismissListener를 사용하여 해제 이벤트를 들을 수 있습니다. 참고: 현재 포커스가 있는 보기를 기반으로 옵션 메뉴의 항목을 변경해서는 안 됩니다. 터치 모드(사용자가 트랙볼 또는 d-패드를 사용하지 않는 경우)에서는 뷰에 포커스를 맞출 수 없으므로 옵션 메뉴에서 항목을 수정하기 위한 기준으로 포커스를 사용해서는 안 됩니다. 보기에 컨텍스트에 민감한 메뉴 항목을 제공하려면 컨텍스트 메뉴를 사용합니다. 일부 메뉴 항목의 디자인 및 사용자 환경이 변경되었지만 작업 및 옵션 집합을 정의하는 의미 체계는 여전히 메뉴 API를 기반으로 합니다. 이 가이드는 안드로이드의 모든 버전에서 메뉴 또는 작업 프리젠 테이션의 세 가지 기본 유형을 만드는 방법을 보여줍니다 :이 튜토리얼은 안드로이드 SDK 응용 프로그램의 옵션 메뉴를 구현하는 방법을 가르 칠 것입니다. 계속 읽어보세요! Android 2.3.x 이하용 응용 프로그램을 개발한 경우 시스템이 onCreateOptionsMenu()를 호출하여 사용자가 처음으로 메뉴를 열 때 옵션 메뉴를 만듭니다. Android 3.0 이상용으로 개발한 경우 작업을 시작할 때 시스템에서 inCreateOptionsMenu()를 호출하여 앱을 표시합니다. MenuInflater를 사용하면 메뉴 리소스에서 컨텍스트 메뉴를 팽창할 수 있습니다. 콜백 메서드 매개 변수에는 사용자가 선택한 보기와 선택한 항목에 대한 추가 정보를 제공하는 ContextMenu.ContextMenuInfo 개체가 포함됩니다.

활동에 각각 다른 컨텍스트 메뉴를 제공하는 여러 뷰가 있는 경우 이러한 매개 변수를 사용하여 팽창할 컨텍스트 메뉴를 결정할 수 있습니다. 여기서는 MenuInflater 클래스의 인플랫() 메서드를 호출하여 메뉴를 팽창시입니다. 메뉴 항목에서 이벤트 처리를 수행하려면 활동 클래스의 optionsItemSelected() 메서드를 재정의해야 합니다. getItemId() 메서드는 선택한 메뉴 항목에 대 한 ID를 쿼리 합니다., Android:id 특성을 사용 하 여 XML의 각 메뉴 항목에 할당 해야 합니다., XML에서 메뉴 정의에 대 한 섹션에 표시 된 대로. 참고: 컨텍스트 작업 모드는 Android 3.0(API 수준 11) 이상에서 사용할 수 있으며 사용 가능한 경우 컨텍스트 작업을 표시하는 데 선호되는 기술입니다. 앱이 3.0보다 낮은 버전을 지원하는 경우 해당 장치의 부동 컨텍스트 메뉴로 전환해야 합니다. 활동 수명 주기 동안 발생하는 이벤트를 기반으로 옵션 메뉴를 수정하려면 onPrepareOptionsMenu() 메서드에서 수정할 수 있습니다. 이 메서드는 메뉴 개체를 현재 존재하는 대로 전달하므로 항목 추가, 제거 또는 비활성화와 같이 수정할 수 있습니다. (조각은 또한 onPrepareOptionsMenu() 콜백을 제공합니다. 부울 값을 반환하는 이 메서드 내에서 각 특정 항목에 응답하는 코드를 추가할 수 있습니다.

사용자가 옵션 메뉴 항목을 선택할 때 시스템은 자동으로 “onOptionsItem선택” 메서드를 호출합니다. 활동에 조각이 포함된 경우 시스템은 먼저 onOptionsItemSelected() 활동을 호출한 다음 각 조각에 대해 각 조각(각 조각이 추가된 순서대로)을 호출하여 true를 반환하거나 모든 조각이 호출될 때까지 호출합니다. add()를 사용하여 메뉴 항목을 추가하고 findItem()을 사용하여 항목을 검색하여 MenuItem API를 사용하여 해당 속성을 수정할 수도 있습니다. 활동에 대 한 옵션 메뉴를 지정 하려면 재정의 에CreateOptionsMenu() (조각자체 제공 자체 에CreateOptionsMenu() 콜백).