본문 바로가기
안드로이드/Menu

안드로이드 Option Menu

by 김어찐 2022. 6. 8.
728x90

안드로이드에서 화면 하나당 하나씩 가질 수 있는 메뉴를 의미하며 현재 보이는 화면(Activity)의 메인 메뉴가 된다.

 

onCreateOptionsMenu

화면을 관리하는 객체인 Activity 객체가 만들어 질 때 자동으로 호출되는 메서드이며 여기에서 메뉴를 생성하게 된다.
메서드가 true를 반환하면 메뉴가 나타난다.

 

OnOptionsItemSelected

사용자가 메뉴를 선택했을 때 자동으로 호출되는 메서드이다.

 

package com.example.optionmenu

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Menu
import android.view.MenuItem
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {

        // XML로 메뉴를 구성한다. (main_menu.xml)
//        menuInflater.inflate(R.menu.main_menu,menu)
        menu?.add(Menu.NONE,Menu.FIRST,Menu.NONE,"코드 메뉴1")
//        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 true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {

//        // main_menu.xml 기반 분기
//        // 메뉴의 id 별로 분기한다.
//        when (item.itemId) {
//            R.id.item1 ->{
//                textView.text = "메뉴1을 눌렀습니다"
//            }
////            R.id.item2 ->{
////                textView.text = "메뉴2을 눌렀습니다"
////            }
//            R.id.item2_1 ->{
//                textView.text = "메뉴2-1을 눌렀습니다"
//            }
//            R.id.item2_2 ->{
//                textView.text = "메뉴2-2을 눌렀습니다"
//            }
//            R.id.item3 ->{
//                textView.text = "메뉴3을 눌렀습니다"
//            }
//        }

        when (item.itemId) {
            Menu.FIRST -> {
                textView.text = "코드 메뉴 1을 눌렀습니다"
            }
            Menu.FIRST + 10 -> {

                textView.text = "코드 메뉴 2-1을 눌렀습니다"
            }
            Menu.FIRST + 20 -> {
                textView.text = "코드 메뉴 2-2을 눌렀습니다"
            }
            Menu.FIRST + 2 -> {
                textView.text = "코드 메뉴 3을 눌렀습니다"
            }
        }
        return super.onOptionsItemSelected(item)
    }
}

 

728x90