티스토리 뷰
버튼을 xml로 만든 뒤 실제로 이벤트를 처리하는 2가지 방법에 대해서 알아보겠습니다. 우선 꼭 알아두어야 하는 것은 아니지만 버튼에 대문자만 출력되는 경우에 수정하는 법입니다.
[안드로이드] 버튼(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)로 만드셔야 코드의 가독성이 좋게 되고 코드도 가벼워지게됩니다.
'안드로이드' 카테고리의 다른 글
[안드로이드] EditText, TextView 전환하기 (0) | 2017.04.17 |
---|---|
[안드로이드] Intent 사용 간단하게 email 보내기 (0) | 2017.04.16 |
[안드로이드] 버튼(Button) 대문자만 나올때!!! (0) | 2017.04.16 |
[안드로이드] Glide 캐시 사용 하지 않기 (1) | 2017.04.15 |
[안드로이드] EditText 한글 밑줄 문제 (0) | 2017.04.15 |
- Total
- Today
- Yesterday