프로그래밍/안드로이드

안드로이드 - 간단한 옵션 메뉴 만들어 보기

가카리 2015. 7. 28. 22:09
반응형

1. 옵션메뉴


스마트폰의 메뉴버튼을 누르면 나타나는 Menu가 옵션메뉴이다. 주로 기능이나 설정 등의 명령을 배치한다.


메뉴는 다음 콜백 메소드에서 작성한다.


boolean onCreateOptionsMenu(Menu menu)


그리고 메뉴를 추가할때는 다음 메소드를 사용한다.


MenuItem add(int groupId, int itemId, int order, CharSequence title)

MenuItem add(int groupId, int itemId, int order, int titleRes)

SubMenu addSubMenu(int titleRes)


1. groupId는 항목의 그룹을 구성할때 사용

2. itemId는 각 메뉴항목 선택시 어떤게 선택됬는지 알아볼때 사용

3. order는 메뉴의 순서를 지정 0이면 순서대로됨

4. title이나 titleRes는 메뉴항목에 보이는 문자열이다.


그리고 실행중에 메뉴를 수정, 편집하려면 다음 메서드를 재정의 해야한다.


boolean onPrepareOptionsMenu(Menu menu)


이 메서드는 메뉴가 열릴때마다 호출되므로 여기서 메뉴항목을 추가하거나 제거 또는 체크 상태나 사용 금지 등 메뉴 항목의 속성을 변경할 수도 있다.


boolean onOptionsItemSelected(MenuItem item)


위 아이템은 사용자가 메뉴를 선택했을때 호출되는 메소드이다.


item 객체는 사용자가 선택한 메뉴 항목이며 getItemId 메서드로 선택 항목의 ID를 조사하고 ID에 따라 적당한 명령을 수행한다.


 

다음은 사용자가 메뉴를 선택하고 그에 따른 토스트 메시지를 보여주는 예제이다.


메뉴버튼 클릭시


 



기타를 누르면 위와 같이 된다.

 

위와 같이 토스트 메시지가 출력된다.



실제 소스인 OptionMenu.java 파일입니다.


package com.example.optionmenu;


import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.widget.TextView;

import android.widget.Toast;


public class OptionMenu extends Activity {


        @Override

        protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        

        TextView MyText = new TextView(this);//화면은 간단한 텍스트뷰한 하나 띄운다

        MyText.setText("메뉴 키를 누르세요.");//글씨입력

        setContentView(MyText);

        }


        //실제 메뉴를 만드는 부분

        @Override

        public boolean onCreateOptionsMenu(Menu menu) {

        super.onCreateOptionsMenu(menu);

        

        MenuItem item=menu.add(0,1,0, "짜장");//MenuItem 객체 선언후 add메소드로 생성

        //여기서 1 짜장의 고유 메뉴 ID 의미

        item.setIcon(R.drawable.ic_launcher);//아이콘 지정

        item.setAlphabeticShortcut('a');//단축키 지정(거의 안씀)

        

        menu.add(0,2,0,"짬뽕").setIcon(R.drawable.ic_launcher);//이런식으로 해도됨.

        

        SubMenu etc = menu.addSubMenu("기타");//기타는 서브메뉴로

        etc.add(0,3,0,"우동");//서브메뉴에는 우동과 만두가 들어있음

        etc.add(0,4,0,"만두");

        

        return true;

        }


        

        //아래는 메뉴가 선택됬을때 실행되는 부분

        @Override

        public boolean onOptionsItemSelected(MenuItem item) {

        switch(item.getItemId()){

        case 1://짜장 선택시

        Toast.makeText(this, "짜장은 달콤해", Toast.LENGTH_SHORT).show();

        case 2://짬뽕 선택시

        Toast.makeText(this, "짬뽕은 달콤해", Toast.LENGTH_SHORT).show();

        case 3://우동 선택시

        Toast.makeText(this, "우동은 달콤해", Toast.LENGTH_SHORT).show();

        case 4://만두 선택시

        Toast.makeText(this, "만두!", Toast.LENGTH_SHORT).show();

        return true;

        }

        return false;

        }

}



반응형