안드로이드 왼쪽 하단부에 있는 하드웨어 버튼인 '메뉴(Menu)' 키를 누르면
지정된 메뉴들이 나타납니다. 옵션 메뉴라고 하는데, 이 메뉴들을 상황에 따라 동적으로 구성할 필요가 있을 때가 있습니다.
이럴 때는 다음처럼 할 수 있습니다.
(코드의 일부만 발췌입니다. 따라서 아래 코드를 보시고 상황에 맞게 넣어주셔야 합니다.)
01.
// Option Menu Item
02.
private
static
final
int
MENU_OPEN_WEB_BROWSER = Menu.FIRST + 1;
03.
private
static
final
int
MENU_ADD_QUEUE = MENU_OPEN_WEB_BROWSER + 1;
04.
private
static
final
int
MENU_PLAY_QUEUE = MENU_ADD_QUEUE + 1;
05.
private
static
final
int
MENU_LIST = MENU_PLAY_QUEUE + 1;
06.
private
static
final
int
MENU_CONNECT_INFO = MENU_LIST + 1;
07.
private
static
final
int
MENU_DETAILS = MENU_CONNECT_INFO + 1;
08.
09.
// Dynamic Option Menu
10.
private
Menu m_Menu =
null
;
11.
12.
@Override
13.
public
boolean
onCreateOptionsMenu(Menu menu)
14.
{
15.
m_Menu = menu;
16.
17.
CheckProperOptionMenu();
18.
19.
return
true
;
20.
}
21.
22.
private
void
CheckProperOptionMenu()
23.
{
24.
m_Menu.removeItem(MENU_ADD_QUEUE);
25.
m_Menu.removeItem(MENU_PLAY_QUEUE);
26.
m_Menu.removeItem(MENU_LIST);
27.
m_Menu.removeItem(MENU_CONNECT_INFO);
28.
m_Menu.removeItem(MENU_DETAILS);
29.
30.
if
(bIsCurrentFlag ==
true
)
31.
{
32.
m_Menu.add(Menu.NONE, MENU_PLAY_QUEUE, Menu.NONE, R.string.menu_play_queue)
33.
.setIcon(R.drawable.sk_icon_addqueue);
34.
}
35.
else
36.
{
37.
m_Menu.add(Menu.NONE, MENU_ADD_QUEUE, Menu.NONE, R.string.menu_add_to_queue)
38.
.setIcon(R.drawable.sk_icon_addqueue);
39.
}
40.
41.
m_Menu.add(Menu.NONE, MENU_LIST, Menu.NONE, R.string.menu_list)
42.
.setIcon(R.drawable.sk_icon_list);
43.
m_Menu.add(Menu.NONE, MENU_CONNECT_INFO, Menu.NONE, R.string.menu_connection_info)
44.
.setIcon(R.drawable.sk_icon_connectioninfo);
45.
m_Menu.add(Menu.NONE, MENU_DETAILS, Menu.NONE, R.string.menu_details)
46.
.setIcon(R.drawable.sk_icon_details);
47.
}
이런 식으로 작성하시면 상황에 맞는 옵션 메뉴를 구성하실 수 있습니다.