이번에는 메뉴를 만들어보자.

android.view.Menu 클래스는 핸드폰에 있는 "Menu" 버튼을 클릭할 때 나타나는 메뉴를 처리하는데 사용된다.

메뉴를 추가하는 메소드는 다음과 같다.

Item  add(int group, int id, CharSequence title, Runnable callback)
Item  add(int group, int id, CharSequence title, int iconRes)
Item  add(int group, int id, int titleRes, int iconRes)
Item  add(int group, int id, CharSequence title)
Item  add(int group, int id, int titleRes)
Item  add(int group, int id, int titleRes, Runnable callback)

메뉴를 생짜베기로 Activity 클래스에 추가할 순 있지만, 개인적으로 보기에는 메뉴를 관리하는 클래스를 따로 추가하여 사용하는 것이 좋다고 생각한다.

그럼 다음과 같은 클래스를 추가해보자.

package com.min.summary;

import android.view.Menu;
import android.view.SubMenu;

public class MenuManager {
    Menu.Item menuItem1;
    Menu.Item menuItem2;
    SubMenu subMenu1_1;
    SubMenu subMenu1_2;
    SubMenu subMenu2;
    public MenuManager(Menu menu) {
        int pos=0;
        menuItem1=menu.add(0, Menu.FIRST+pos++, "Menu-1");
        menuItem2=menu.add(0, Menu.FIRST+pos++, "Menu-2");
        subMenu1_1=menu.addSubMenu(0, Menu.FIRST+pos++, "Sub menu-1_1");
        subMenu1_2=menu.addSubMenu(0, Menu.FIRST+pos++, "Sub menu-1_2");
        subMenu2=menu.addSubMenu(1, Menu.FIRST+pos++, "Sub menu-2");
    }
}

뭔지 모르시겠지만, 일단 이렇게 해보자.

그럼 이제 이 클래스를 써야겠죠?

package com.min.summary;

import android.app.Activity;////
import android.content.Intent;
import android.os.Bundle;////

import android.app.AlertDialog;

import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.Button;
import android.widget.ScrollView;
import android.widget.Toast;
public class AndroidAPISummary extends Activity {
    LinearLayout  linearLayout;
    LayoutParams lpFillWrap=new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
    MenuManager menuManager;
    // 중간 생략

    public boolean onCreateOptionsMenu(Menu menu) {
        boolean result = super.onCreateOptionsMenu(menu);
        menuManager=new MenuManager(menu);
        return result;
    }
    // 이하 생략
}

AndroidAPISummary 클래스의 변수로 menuManager를 만들자. 물론 해당 변수의 타입은 MenuManager 클래스이다. 
그리고 중점적으로 봐야하는 것은 onCreateOptionsMenu() 메소드이다.  위의 예와 같이 onCreateOptionMenu() 메소드를 Overridding하고, 메뉴 설정해주면 안드로이드에서 메뉴가 나타난다. 


이제 에뮬레이터를 띄워서 결과를 확인해볼까?

이제 메뉴를 클릭하면 어떤 이벤트를 처리해야 하는데, 다른 이벤트 처리방법과 비슷하다.
(솔직히 이부분은 아직 구현할 필요가 없어서 잘 모르겠다. )
나중에 시간되면 정리해야지...

Posted by tuning-java