Kandroid Archive (Old article backup) 
혹시나 저처럼 메뉴뜨는거 어케하는지 몰르는 분을 위해 적습니다.
작성자
작성일 2008-05-15 (목) 10:45
ㆍ추천: 0  ㆍ조회: 7396      
IP: 220.xxx.211

    아래의 소스를 사용하면  위와 같이 메뉴버튼을 눌렀을때 옵션메뉴창이 올라오게 만들수 있습니다.
 
   @Override
    public boolean onPrepareOptionsMenu(Menu menu) { //옵션메뉴를 셋팅하는 부분입니다.
        super.onPrepareOptionsMenu(menu); 
        Menu.Item item; //메뉴 아이템 변수 설정
       
            // first, get rid of our menus (if any)
        menu.removeItem( 0 ); //해당하는 아이디값의 아이템을 삭제해줍니다. 이유는
        menu.removeItem( 1 ); //클릭 이벤트가 발생했을시 메뉴가 증가하는 것을 방지해주기 위함입니다.
        menu.removeItem( 2 );
        menu.removeItem( 3 );
        menu.removeItem( 4 );
        menu.removeItem( 5 );
            // next, add back item(s) based on current menu mode
       
        item = menu.add(0, 0, R.string.Menu_Button1, R.drawable.a); //아이템을 메뉴에 추가 시켜줍니다.
        item = menu.add(0, 1, R.string.Menu_Button2, R.drawable.b); //add 메서드에 오버라이딩된 메서드에 따라서
        item = menu.add(0, 2, R.string.Menu_Button3, R.drawable.c); //인자값은 틀려지지만
        item = menu.add(0, 3, R.string.Menu_Button4, R.drawable.d); //별반 어려울 것은 없습니다. 이클립스 사용하면
        item = menu.add(0, 4, R.string.Menu_Button5, R.drawable.e); //쉽게 알수 있으리라 생각됩니다.
        item = menu.add(0, 5, R.string.Menu_Button6, R.drawable.f);
        return true; //준비가 됐으면 트루를 반환합니다.
    }
   
    /** Handle the menu item selections */
    @Override
    public boolean onOptionsItemSelected(Menu.Item item) { //아이템이 선택(클릭)됐을시의 반응입니다.
     switch (item.getId()) {
       case 0:        //아이디 0의 메뉴가 선택됐을시의 반응
        dlg.setContentView(R.layout.main);  //이 부분에 0번 선택됐을때 실행될 메서드나 반응 들을 코딩하면 된다.
        break;
       case 1:        //아이디 1의 메뉴가 선택됐을시의 반응
        Text.setText(R.string.Menu_Button2);
        break;
       case 2:
        Text.setText(R.string.Menu_Button3);
        break;
       case 3:
        Text.setText(R.string.Menu_Button4);
        break;
       case 4:
        Text.setText(R.string.Menu_Button5);
        break;
       case 5:
        SearchDialog();
        break;
     }
         return super.onOptionsItemSelected(item); 
    }
 
이 소스도 여기저기 소스에서 찾아서 해석해서 쓰던거라 또한 제가 미천한 지식을 가지고 있어서
쉽게 설명이 안되네요.ㅎㅎ;
그래도 필요하신 분 있으면 저처럼 맨땅에 해딩하지 마시고 편하게 하시길~ㅎㅎ
이름아이콘 cococo
2008-05-15 11:23
removeItem를 꼭해야 하나요?
저는 이부분이 좀 이해가 안가네요..
추가 설명 부탁해도 되나요?
item를 만드는 이유 좀 설명 부탁... ㅋ
   
이름아이콘 들풀
2008-05-15 11:47
조만간에 현국이다님을 위해..안드로이드 소스 게시판을 따로 만들어야 겠네여...
microsoft msdn과 같은 sample 코드들이 잘 정리되어 있는 공간을 만들 수 있는
방안을 고민해 보겠습니다.. 감사.
   
이름아이콘 현국이다
2008-05-15 12:32
removeitem을 안쓰고 메뉴 아이템을 클릭하면 클릭한만큼 메뉴 아이템이 추가가 되거든요. 그래서
추가되는것을 없애줄려고 removeitem을 쓴거구요.
item을 만드는 이유는 메뉴마다 아이디가 있어야지 관리하기가 편해질것같애서 그렇게 했는대
저도 다른 예를 보고 한거라 확실한지는 않네요.ㅎㅎ;;
   
이름아이콘 현국이다
2008-05-15 12:33
샘플코드가 정리되있는 공간이 있으면 좋쵸.ㅎ
그리고 안드로이드 에플리케이션 책은 언제쯤 출간되는건가요?ㅎㅎ
   
이름아이콘 들풀
2008-05-15 13:05
책은..열심히..쓰고 있습니다...곧 나오길 저도 기대하고 있습니다..ㅎㅎ
   
이름아이콘 cococo
2008-05-15 14:16

onPrepareOptionsMenu 가 호출 될때마다 add 되기 때문에 removeItem 한다는 건 좀 로직적으로 문제가 있지 않을까요? 제생각은 add는 한번 해야한다고 생각하는데.. 어디서 수정해야 하나요 ? 알 수가없네요. ㅋ
if문으로 한번 Add하면 그 다음은 안하게 해야하나 아니면 item변수를 전역으로 잡고 생성자나 초기화함수에서 Add를 한번해줘야 하나요 .. 다른 방법이 있을까요?
   
이름아이콘 현국이다
2008-05-15 14:43
@Override
   public boolean onCreateOptionsMenu(Menu menu) {
             
       super.onCreateOptionsMenu(menu);
       menu.add(0,1 ,R.string.weather,R.drawable.weather );
       menu.add(0,2 ,R.string.map,R.drawable.location );
       menu.add(0,3 ,R.string.tourguide ,R.drawable.tour);
       menu.add(0,4 ,R.string.option );
       
       
       return true;
   }
   
   @Override
   public boolean onMenuItemSelected(int featureId, Item item) {
       super.onMenuItemSelected(featureId, item);
       switch (item.getId()) {
       case 1:
       break;
       case 2:
           break;
       case 3:
           break;
       case 4:            
           break;
       }
       return true;
   }
요렇게 해도 문제없이 돌아가긴하네요. -_ -;;;ㅎㅎ
   
이름아이콘 BJoo
2008-05-15 16:05
좋은 자료 감사합니다. 힘이 나네요^^
   
이름아이콘 cococo
2008-05-15 16:38
menu.add 이방법은 일반적인 방법이고요. 제가 일고 싶은건 item = menu.add 이런식의 코드에서 item 을 사용하면 어떤 다른 효과가가 있을까? 이건데
가령 메뉴에 아이콘을 사용할 수 있다. 뭐 이런식의 다른 기능들 말이죠.

이상한 방향으로 흐르는 것 같아요.. ^^!
   
이름아이콘 현국이다
2008-05-15 17:40
ㅇ ㅏ.. ㅋㅋ 음 저는 item 이러면 아이템 아이디를 검색하거나 아이디를 쓸때 먼가 도움이 될 줄 알았는데요. 그건 또 아닌거같네요.. 좀 공부가 필요한듯.- _-;;; 그리고 위에 보면 저도 다른 예제를 보고 참조한 내용이기 때문에 약간 모르는 내용이 있네요. ㅠ_ ㅠ
메뉴에 아이콘을 사용하는 방법은 위에 add 부분처럼 하시면 아이콘은 나옵니다.ㅎ; 기본은 add(int group, int id, int titleres)인데요. 거기다가 아이콘을 추가할려면
add(int group, int id, int titleres, int iconrec)이렇게하고 마지막 인자에 아이콘 리소스를 추가해주면 아이콘이 나옵니다.
   
이름아이콘 cococo
2008-05-15 18:49
메뉴를 사용하는 중에 아이콘 바꾸기 이런거 할때
on/off 메뉴에서 on일때 아이콘이 칼라이고 off일때 흑백 아이콘 나오는 그런 메뉴에 사용할 수 있을까요?
   
이름아이콘 현국이다
2008-05-15 19:58
item state에 대해서 공부가 미흡해서 잘 몰르겠어요.ㅎ;; 선택되거나 눌렸을때 아이콘이 바뀌는 방법을 알면 좋을텐데 잘 되지가 않네요.ㅎ;;
   
이름아이콘 cococo
2008-05-15 20:18
감사합니다.
나중에 아시면 꼭 알려주세요...ㅎㅎㅎㅎㅎ
   
이름아이콘 들풀
2008-07-25 10:27
참조 : http://developerlife.com/tutorials/?p=304
   
이름아이콘 도를
2011-09-03 14:11
이거... 어떻게 적용하나요?
이 소스를 어디다 붙여넣어야 작동하나요?
   
 
덧글 쓰기 0
3500
※ 회원등급 레벨 0 이상 읽기가 가능한 게시판입니다.