앱 만들기/안드로이드 study

안드로이드의 기술 #액션바 옵션 메뉴 만들기

나도처음이야 2020. 10. 10.
반응형

 

옵션메뉴

옵션 메뉴를 구현해보자.

위 옵션 메뉴 구성은 하기와 같다.

옵션 메뉴 4개 가 존재하며, 각 옵션 메뉴를 선택시 화면에 선택된 메뉴의 텍스트가 표기된다.

 

1. 옵션 메뉴 화면을 구성하자.

      res 폴더 하부에 메뉴 폴더 와 menu.xml 파일을 만든 후,  메뉴 아이템을 배치한다.

 

참고로, 메뉴 리소스 폴더 만드는 방법은 

res 폴더에서 New -> Android Resource Directory 를 선택.

Resource type 을 menu 로 설정하면 된다.

그리고, 메뉴 xml 파일을 만드는 방법은,

생성된 menu 폴더에서 New-> Menu Resource File  선택 후,

파일명을 기재하면 xml 파일이 생성된다.

 

2. 구성된 메뉴 XML을 화면에 나오게 하자.

   메뉴 xml 을 화면에 로딩 하기 위해서는 해당 Activity에서 하기 함수를 오버 라이딩 하면 된다. 

1
2
3
4
5
6
7
8
  // 옵션 메뉴를 구성
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       // 메뉴를 위한 인플레이트 작업.
MenuInflater inflater = getMenuInflater();
// 메뉴 xml 을 메뉴로 설정하기.
        inflater.inflate(R.menu.main_menu , menu);
 
        return true;
    }
cs

여기 까지 구현을 하고 앱을 실행하면 옵션메뉴가 생성된 것을 확인 할 수 있다. 

 

 

3. 옵션 메뉴 이벤트 동작 구현.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 옵션메뉴 이벤트 구현
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        // 선택한 옵션 메뉴 id 추출
        int id = item.getItemId();
 
        switch (id) {
            case R.id.item1:
                textView.setText("옵션 메뉴1 선택되었습니다");
                break;
            case R.id.item2:
                textView.setText("옵션 메뉴2 선택되었습니다");
                break;
            case R.id.item3:
                textView.setText("옵션 메뉴3 선택되었습니다");
                break;
            case R.id.item4:
                textView.setText("옵션 메뉴4 선택되었습니다");
                break;
 
        }
        return super.onOptionsItemSelected(item);
    }
cs

 

 

옵션 메뉴에 대한 이벤트를 구현하기 위해서는

onOptionsItemSelecte() 함수를 오버라이딩 한다. 인자 값 item 을 통해 어떤 메뉴가 선택되었는지 인식 할 수 있다.

해당 예제 에서는 단순히 선택된 옵션 메뉴의 이름을 Activity 의 TextView 에 프린트 하는 기능 만 구현했다.

이곳에 여러 기능들을 넣으면 확장 기능이 가능하다.

전체 코드는 하기 처럼, 간단 하다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
public class MainActivity extends AppCompatActivity {
 
    TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        textView = (TextView)findViewById(R.id.text1);
    }
 
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_menu , menu);
 
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        // 사용자가 선택한 메뉴의 ID 값을 호출한다.
        int id = item.getItemId();
 
        switch (id) {
            case R.id.item1:
                textView.setText("옵션 메뉴1 선택되었습니다");
                break;
            case R.id.item2:
                textView.setText("옵션 메뉴2 선택되었습니다");
                break;
            case R.id.item3:
                textView.setText("옵션 메뉴3 선택되었습니다");
                break;
            case R.id.item4:
                textView.setText("옵션 메뉴4 선택되었습니다");
                break;
 
        }
        return super.onOptionsItemSelected(item);
    }
}
cs

 

 

다음 포스팅 에서는 

해당 옵션 메뉴 중 자주 사용하는 기능을 액션바 에 배치 시키는 방법을 알아보자.

감사합니다. 

 

 

 

* 가을녘 빗소리가 듣고 싶을땐...

Rain Sound ☆ 빗소리 를 추천드립니다. 

감사합니다.

 

play.google.com/store/apps/details?id=blue.soo.rainsounds

 

Rain Sound ☆ 빗소리 - Google Play 앱

안녕하세요~ 다운로드 받아주셔서 감사합니다. 빗소리가 사람의 마음을 차분하게 해준다고 하죠~ 때로는 흥분되게 하는경우도 많은거 같습니다. It's raining 이란 곡처럼요 ^^ 그래서 빗소리를 앱�

play.google.com

 

반응형

댓글