티스토리 뷰

  버튼을 xml로 만든 뒤 실제로 이벤트를 처리하는 2가지 방법에 대해서 알아보겠습니다. 우선 꼭 알아두어야 하는 것은 아니지만 버튼에 대문자만 출력되는 경우에 수정하는 법입니다.


버튼(Button) 대문자만 나올때!!!


[안드로이드] 버튼(Button) 사용 방법(1)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MainActivity extends AppCompatActivity {
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.button);
 
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 버튼이 클릭될 시 할 코드작성
            }
        });
    }
}
cs


setOnClickListener를 이용해서 버튼을 클릭할 때 듣는 함수를 만들어주었습니다. 이 함수들과 class들은 이미 안드로이드 스튜디오에서 미리 만들어져있기 때문에 inner class로 만들어 주었습니다. 하지만 이런 식으로 버튼의 이벤트 코드를 만들면 버튼마다 하나하나 다 해주어야 되기 때문에 버튼이 많아지면 코드의 길이도 엄청 길어질 것입니다. 따라서 길이를 줄일 수 있도록 다음 방법을 알아보겠습니다.


[안드로이드] 버튼(Button) 사용 방법(2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.button);
        btn.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                 // 버튼이 클릭될 시 할 코드작성
                break;
        }
 
    }
}
cs


  버튼을 사용하기 위해서 하는 방법은 동일합니다. 하지만 얼마나 간편하게 하느냐가 중요하겠죠? implements를 이용해서 View의 onClickListener를 MainActivity에 적용시켜 주었습니다. 이제 MainActivity에서 예제(1)처럼 new를 이용해서 생성하지 않아도 다양한 메서드들을 사용할 수 있게 되었습니다. setOnClickListener의 인자도 MainActivity이므로 this로 주어 간편해졌습니다. 그리고 제일 간단해진 점은 예제(1)과 같이 버튼마다 onClick 메서드를 만들어 주지 않아도 되는 것입니다. 이제 setOnClickListener로 등록된 버튼들을 전부 onClick 메서드가 그 ID 값들을 받아오므로 ID에 따라서 분류만 해주면 되어 switch와 case를 이용해서 분류해주 었습니다. 이제 새로운 버튼을 추가 시 공동부분과 setOnClickListener만 해주고 case.R.id.xxxx: //내용 break; 의 형태로 바로 사용 하실 수 있게 되었습니다.!!!!


  간단한 버튼 1~2개 정도는 예제(1)로 많이 하지만 버튼이 많아지거나 onClickListener를 사용하는 곳이 많아지면 예제(2)로 만드셔야 코드의 가독성이 좋게 되고 코드도 가벼워지게됩니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday