긴 하지만) 주어진 디스플레이 크기를 효율적으로 사용해야 합니다.
안드로이드는 그렇기 때문에 메뉴같은 것들은 사용자가 필요할때만 화면에 나타도록 설계 되었
습니다. 이번 포스트는 그러한 메뉴를 어떻게 구현을 하는지가 주된 내용이 되겠습니다.
다음과 같이 사용자가 메뉴 버튼을 눌렀을때 메뉴바를 표시합니다.
메뉴바를 구현하기 위해서는 액티비티에서 onCreateOptionMenu() 와
onOptionsItemSelected() 메서드를 오버라이딩 하면 되는데 다음과 같이 합니다.
메뉴바를 만들 엑티비티의 소스에서 오른쪽 버튼을 클릭한후
soure->Override/Implement Methods 를 선택합니다. 그럼 다음과 같은 창이 나오는데
우리가 오버라이딩할 onCreateOptionMenu() 와 onOptionsItemSelected()를 체크한뒤 확인
을 누르면
다음과 같은 2개의 메서드를 만들어 줍니다( 주석 된 코드부분 제외) 이 두 메서드를 구현함
으로서 메뉴바를 사용할수 있게 되는데 우선
OnCreateOptionsMenu() 메서드는 액티비티의 옵션 메뉴를 초기화 하는 메서드입니다.
인자로 들어오는 Menu 클래스의 add()메서드 즉 Menu.Add()메서드를 이용하여 메뉴에 아
이템을 추가하는데 Menu 클래스의 존재하는 4가지의 Add()메서드중 이번 포스트에서 사용
할 메서드는 다음과 같습니다.
abstract MenuItem add( int groupId, int itemId, int order, CharSequence title)
이 함수에서 처음 인자인 groupId 같은 경우는 메뉴 아이템을 그룹화할때 사용하지만 이번 포
스트에서는 사용하지 않습니다.
두번째인 itemId 같은경우는 다음에 구현할 onOptionsItemSelected메서드에서 어떤 메뉴가
선택이 되었는지 구분하는 아이디 이기 때문에 각각 메뉴별로 구분할수 있는 값을 넣어 주어
야 합니다.
세번째 order는 메뉴에 아이템들이 출력될 순서를 지정합니다. 이번 포스트에는 사용 하지 않
습니다.
네번째 title은 각 아이템에 출력될 문자열을 넣습니다.
이렇게 menu.Add()를 이용하여 메뉴에 아이템을 넣어주면 메뉴를 화면에 출력하는 것 까지
는 구현이 되었습니다.
다음 으로는 onOptionsItemSelected() 메서드인데 이 메서드의 인자로 MenuItem item이 넘
어옵니다. 이 item을 이용하여 어떠한 것이 클릭 되었는지를 구분하는데 item.getItemId()메
서드를 이용하면 클릭된 메뉴의 Id를 받아올수 있습니다. 이 id에 있는 값이 좀전에
onCreateOptionMenu() 메서드 안에서 menu.add() 에 두번째 인자로 들어갔던 그 값 입니
다. 그렇기 떄문에 switch문을 이용해서 클릭된 아이템의 아이디 별로 실행될 코드를 작성 해
주시면 됩니다.
그럼 다음 포스트에서 봐요~
( 위의 스크린샷중 코드부분의 주석처리가 되어있는 부분을 보시면 이해가 빠르실 거라고 생
각합니다.)






저 add함수를 이용해서는 아이콘을 넣을 수가 없나여???
답글삭제add를 호출하고 setIcon을 호출하시면 되겠습니다,.
답글삭제예를 들어 add().setIcon(); 이런식으로 setIcon의 인자로는 리소스의 아이디를 적어주시면 되겠습니다