[안드로이드/Menu] Option Menu

2023. 3. 5. 23:52· Android
목차
  1. Option Menu
반응형

Option Menu

  • 안드로이드에서 화면 하나당 하나씩 가질 수 있는 메뉴를 의미 
  • 현재 보이는 화면(Activity, 눈에 보이는 화면) 의 메인 메뉴
  • xml(메뉴 고정인 경우), code(메뉴 유동적으로 생성하는 경우) 로 메뉴 구성 가능 

 

주요 메서드 

onCreateOptinosMenu : 화면을 관리하는 객체인 Activity 객체가 만들어 질 때 자동으로 호출

-> 이 메서드에서 메뉴 생성, True 반환시 메뉴 나타남

res 폴더에 메뉴 관련 xml을 작성할 파일을 만들어준다. 이때 Menu 폴더를 따로 만들어 그 안에서 관리 해준다.

 override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // xml로 메뉴 구성
        menuInflater.inflate(R.menu.main_menu, menu)  // 매개변수로 들어오는 메뉴 객체 넣어줌


	// code로 메뉴 구성
        menu?.add(Menu.NONE,Menu.FIRST, Menu.NONE, "코드 메뉴1") // 메뉴는 그룹을 정해놓고 그 그룹 안에서 작업이 가능
        // 첫번째 매개변수 : 그룹의 아이디 (사용 안 할 경우 NONE)
        // 두번째 매개변수 : 메뉴 아이디 (메뉴 아이디로 사용하라고 제공하는 값이 FIRST)
        // 세번째 매개변수 : 메뉴를 어떤한 순서로 배치할 것인다 (NONE 으로 처리하면 작성 순서대로 배치)
        // 네번째 매개변수 : 배치된 메뉴 항목의 이름
        
        //menu?.add(Menu.NONE,Menu.FIRST + 1, Menu.NONE, "코드 메뉴2")
        val sub = menu?.addSubMenu("코드 메뉴2") // 하위 메뉴 만들기
        sub?.add(Menu.NONE,Menu.FIRST + 10, Menu.NONE, "코드 메뉴2-1")
        sub?.add(Menu.NONE,Menu.FIRST + 20, Menu.NONE, "코드 메뉴2-2")
        menu?.add(Menu.NONE,Menu.FIRST + 2, Menu.NONE, "코드 메뉴3")
        
        //return super.onCreateOptionsMenu(menu)
        return true
    }

 

onOptionsItemSelected : 사용자가 메뉴를 선택했을 때 자동 호출

// XML로 구성
override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // 분기문으로 아이템별 클릭 동작 구현
        when (item.itemId) {
            R.id.item1 -> {
                binding.textView.text = "메뉴1을 눌렸습니다."
            }
            R.id.item2 -> {
                binding.textView.text = "메뉴2을 눌렸습니다."
            }
            R.id.item3 -> {
                binding.textView.text = "메뉴3을 눌렸습니다."
            }

        }
        return super.onOptionsItemSelected(item)
    }
 
 // Code로 구성
 override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // 분기문으로 아이템 별 클릭 동작 구현
        when (item.itemId) {
            Menu.FIRST -> {
                binding.textView.text = "메뉴1을 눌렸습니다."
            }
            Menu.FIRST + 1 -> {
                binding.textView.text = "메뉴2를 눌렸습니다."
            }
            Menu.FIRST + 2 -> {
                binding.textView.text = "메뉴3을 눌렸습니다."
            }

        }
        return super.onOptionsItemSelected(item)
    }

 

하위 메뉴 만들기

  • item 안에 새로운 menu-item 을 넣어 만듬 (item 클릭시 코드 작성은 위와 동일)

// XML로 구성
override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // 분기문으로 아이템별 클릭 동작 구현
        when (item.itemId) {
            R.id.item1 -> {
                binding.textView.text = "메뉴1을 눌렸습니다."
            }
            R.id.item2_1 -> {
                binding.textView.text = "메뉴2-1을 눌렸습니다."
            }
            R.id.item2_2 -> {
                binding.textView.text = "메뉴2-2을 눌렸습니다."
            }
            R.id.item3 -> {
                binding.textView.text = "메뉴3을 눌렸습니다."
            }

        }
        return super.onOptionsItemSelected(item)
    }
    
// Code로 구성
 override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // 분기문으로 아이템 별 클릭 동작 구현
        when (item.itemId) {
            Menu.FIRST -> {
                binding.textView.text = "메뉴1을 눌렸습니다."
            }
            Menu.FIRST + 10 -> {
                binding.textView.text = "메뉴2-1을 눌렸습니다."
            }
            Menu.FIRST + 20 -> {
                binding.textView.text = "메뉴2-2을 눌렸습니다."
            }
            Menu.FIRST + 2 -> {
                binding.textView.text = "메뉴3을 눌렸습니다."
            }

        }
        return super.onOptionsItemSelected(item)
    }
반응형

'Android' 카테고리의 다른 글

[안드로이드/Menu] Popup Menu  (0) 2023.03.08
[안드로이드/Menu] Context Menu  (0) 2023.03.06
[안드로이드/권한] 권한 등록 및 허가  (0) 2023.03.02
[안드로이드/AdapterView] RecyclerView  (0) 2023.03.01
[안드로이드/AdapterView] MultiChoiceListView  (0) 2023.02.28
  1. Option Menu
'Android' 카테고리의 다른 글
  • [안드로이드/Menu] Popup Menu
  • [안드로이드/Menu] Context Menu
  • [안드로이드/권한] 권한 등록 및 허가
  • [안드로이드/AdapterView] RecyclerView
gangmini
gangmini
gangmini
게으른J 의 테크로그
gangmini
전체
오늘
어제
글쓰기방명록관리자
  • 분류 전체보기 (127)
    • 인공지능(AI) & 데이터 분석 (5)
    • Android (91)
      • Coroutine (3)
      • Compose (0)
      • 안드로이드 CS (0)
    • Kotlin (3)
    • Data Structure (0)
    • 알고리즘 (20)
      • 알고리즘 이론 (11)
      • 백준(BOJ) 문제 풀이 (9)
    • Build Tool (2)
    • Git (2)
    • 일본어 (0)
    • 기타(취준, 활동) (0)


인기 글



최근 댓글



최근 글

hELLO · Designed By 정상우.v4.2.2
gangmini
[안드로이드/Menu] Option Menu
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.