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
'안드로이드 > Menu' 카테고리의 다른 글
안드로이드 bottomappbar 키보드 활성화 시 화면 위로 올라가는 현상 제거 (0) | 2022.08.02 |
---|---|
안드로이드 Popup Menu (0) | 2022.06.08 |
안드로이드 Context Menu (0) | 2022.06.08 |