관리 메뉴

드럼치는 프로그래머

[안드로이드] 제5강좌 - 옵션메뉴,서브메뉴 만들기 본문

★─Programing/☆─Android

[안드로이드] 제5강좌 - 옵션메뉴,서브메뉴 만들기

드럼치는한동이 2011. 5. 26. 16:37

Option Menu 1)  ~.java에서 생성                                    |

                             Menu.add( , , , ).setIcon();                |----> 생성메소드 onCreateOptionsMenu(Menu menu) 

                                                                                    |           아이템 선택시 자동 호출 메소드 onOptionItemSelected(MenuItem menuItem)

                    2) ~.xml 문서 이용 <?xml ~~~~~?>~             |

  <menu>

     <item  - id

               - title                ===================>>>>  MenuInflater.inflate(   )

               - icon 

 

@@@ 서브메뉴 만들기   .java 이용 @@@

Submenu etc = menu.addSubMenu("서브메뉴");

etc.add(0,3,0,"메뉴");

                 하나로 종합   ==>  menu.addSubMenu("서브메뉴").add(0,3,0,"메뉴3");

 

============================================================================================================================================

@@ 옵션 항목에 서브메뉴 띄우기 @@

 

public class Andtest extends Activity { //public 공유가능
    /** Called when the activity is first created. */
 private static final int MENU_TEST=0; //private 개인적인것  final 마지막 상속자  static 변수를 상수로 정할 때
 private static final int MENU_QUIT=1; // 변수형이 앞에온다.
 private static final int MENU_ICON=2;
 private static final int MENU_SUB=3;
 private static final int MENU_SUB2=4;
    @Override
    public boolean onCreateOptionsMenu(Menu menu){ //변경 불가능
     menu.add(0, MENU_TEST, 0, "Test Menu Button").setIcon(R.drawable.icon);  //그룹 id,메뉴항목 id,순서,메뉴항목 타이틀
     menu.add(0, MENU_QUIT, 0, "Test Quit Button").setIcon(R.drawable.icon);   //순서를 같게 놓으면 add 한 순서대로 나옴
     menu.add(0, MENU_ICON, 0, "Test Icon BUtton").setIcon(R.drawable.icon);   //아이콘 추가
     //menu.addSubMenu("서브메뉴").add(0,MENU_SUB,0,"메뉴3"); //서브메뉴 추가 항목 , 선언한 이름이 2번째칸에 들어가야 함
     SubMenu etc =menu.addSubMenu("서브메뉴"); //F2를 누르면 나오는 화면에 서브메뉴항목 추가
     etc.add(0,3,0,"우동"); //서브메뉴항목을 누르면 우동과 만두 나옴

     etc.add(0,4,0,"만두"); //분리하여서 작성시에는 두번째 해당숫자 입력
     return true;  //부울린 값으로 리턴해 줌
    }

============================================================================================================================================

@@ 옵션항목에서 바로 서브메뉴로 선택가기 @@

                                                                              ★ 서브메뉴 항목 서로 중복되면 안됨. ★

 

public class Andtest extends Activity { //public 공유가능
    /** Called when the activity is first created. */
 private static final int MENU_TEST=0; //private 개인적인것  final 마지막 상속자  static 변수를 상수로 정할 때
 private static final int MENU_QUIT=1; // 변수형이 앞에온다.
 private static final int MENU_ICON=2;
 private static final int MENU_SUB=3;
 private static final int MENU_SUB2=4;
    @Override
    public boolean onCreateOptionsMenu(Menu menu){

    SubMenu etc = menu.addSubMenu("Test");
     etc.add(0,2,0,"서브메뉴1");
     etc.add(0,2,0,"서브메뉴2");
     etc.add(0,2,0,"서브메뉴3");
     //menu.add(0, MENU_TEST, 0, "Test Menu Button").setIcon(R.drawable.icon);//그룹 id,메뉴항목 id,순서,메뉴항목 타이틀
     //menu.add(0, MENU_QUIT, 0, "Test Quit Button").setIcon(R.drawable.icon);//순서를 같게 놓으면 add 한 순서대로 나옴
     //menu.add(0, MENU_ICON, 0, "Test Icon BUtton").setIcon(R.drawable.icon);//아이콘 추가
     //menu.addSubMenu("서브메뉴").add(0,MENU_SUB,0,"메뉴3"); //서브메뉴 추가 항목 , 선언한 이름이 2번째칸에 들어가야 함
     //SubMenu etc =menu.addSubMenu("서브메뉴");
     //etc.add(0,3,0,"우동"); //분리하여서 작성시에는 두번째 해당숫자 입력
     //etc.add(0,4,0,"만두");
     return true;  //부울린 값으로 리턴해 줌

 

============================================================================================================================================

@@@ 서브메뉴 만들기   .xml  이용 @@@

- 메뉴관련 xml을 만들려면 res에 메뉴관련 폴더를 만들어서 사용한다.

 

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.menu, menu); //R.java파일의 menu폴더. 두번째 인자값은 oncreatoptionmenu의 menu를 말함.

 

res폴더에 ㅡmenu 폴더 생성-xml생성-이름적고 menu항목으로 클릭

 

@@@ menu.xml @@@

 

<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
 
  <item android:id="@+id/jjajjang"  //item을 생성       "@+id/아이디이름"
    android:title="짜장"                   //title 이름 (실제 보여지는 이름)
    android:icon="@drawable/icon"
    android:alphabeticShortcut="a"
    />
   <item android:id="@+id/jjambong"
    android:title="짬봉"
    android:icon="@drawable/icon"
    />
   <item android:id="@+id/submenu" //기타 안에 만두를 만듬 ..???? 왜 그러지???
      android:title="기타">
    <menu>
       <item android:id="@+id/mandoo"
          android:title="만두"/>
       </menu>
      </item>
 </menu>
@@@ .java 도 변경을 시켜야 함 @@@

 

package and.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;

public class Andtest extends Activity { //public 공유가능
    /** Called when the activity is first created. */
 private static final int MENU_TEST=0; //private 개인적인것  final 마지막 상속자  static 변수를 상수로 정할 때
 private static final int MENU_QUIT=1; // 변수형이 앞에온다.
 private static final int MENU_ICON=2;
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu){ //변경 불가능
     SubMenu etc = menu.addSubMenu("Test");
     etc.add(0,R.id.jjajjang,0,"짜장");  //2번째 인자에 해당 인자의 이름을 넣고 마지막 인자에 표시되는 이름을 작성한다.
     etc.add(0,R.id.jjambong,0,"짬봉");
     etc.add(0,R.id.mandoo,0,"만두");
        
     return true;  //부울린 값으로 리턴해 줌
    }
   public boolean onOptionsItemSelected(MenuItem item){
     switch(item.getItemId()){
     case R.id.jjajjang:          //etc.add( , , , )의 2번째 인자에 들어갈 이름 선언 // xml에서 만들어진 것을 .java로 가지고 옴
      Toast.makeText(this,"짜장은 달콤해.",Toast.LENGTH_SHORT).show();  //서브메뉴를 클릭하면 해당 "" 글씨가 나왔다 사라짐.
      //Toast.makeText(어디에,"보여줄 문장",보여주는 시간).show();
      return true;
     case R.id.jjambong:
      Toast.makeText(this,"짬봉은 매워.",Toast.LENGTH_SHORT).show();
       return true;
     case R.id.mandoo:
      Toast.makeText(this,"만두는 뜨거워.",Toast.LENGTH_SHORT).show();
      return true;
          }
     return false;
    }
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

============================================================================================================================================

 

Comments