옵션 메뉴 동적으로 생성하기

by 조쉬 posted Jul 16, 2015
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

안드로이드 왼쪽 하단부에 있는 하드웨어 버튼인 '메뉴(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.}


이런 식으로 작성하시면 상황에 맞는 옵션 메뉴를 구성하실 수 있습니다.