안드로이드/이론

안드로이드 버튼 사용하기 입니다.

원원 2017. 4. 20. 17:21

안녕하세요. 이번에는 버튼을 클릭하면 화면에 있는 텍스트가 바뀌는 것을 해보겠습니다.



먼저 프로젝트를 빈 프로젝트를 만들고 layout으로가서 버튼과 텍스트뷰를 화면에 배치해줍니다.





이런식으로 배치해줫습니다.



기본 텍스트뷰의 이름과 버튼의 이름을 변경해였습니다.




오른쪽에 보면 Properties가 있는데 여기서는 위젯들의 다양한 속성들을 변경할 수 있습니다.(색깔,위치,크기 등등)

ID에 보면 textView가 나와있는데 이 것이 그 배치한 위젯의 ID입니다. 여기서는 textView가 있는데 이건 텍스트뷰의 ID이고, 이것을 사용하는 곳은 java코드에 가서 사용합니다.





이제 MainActivity.java에 가서 동작할 것을 입력해주면 됩니다. 여기서 제가 할 것은 버튼 클릭->텍스트뷰의 내용이 바뀜 입니다.

이것을 코드로 표현해야하는데 순서가 1.버튼과 텍스트뷰의 ID를 가져옴. 2.버튼이 눌렸을때 이벤트 발생 이정도입니다.

그래서 버튼과 텍스트뷰의 ID를 가져옴을 하기위해 Button btn = (Button)findViewById(R.id.button);을 해줫습니다. Button클래스에 있는 findViewById를 사용하여 한것입니다.

R.id.button에서 "button"은 버튼의 ID입니다. 빨간줄이 뜰 수도 있는데 그땐, 마우스를 갖다대서 import class를 해주면 버튼클래스를 임포트해줍니다.


이제 버튼이 눌렸을때 이벤트 발생을 해하는데 버튼이 눌렸을때 이벤트 발생하는 방법은 여러가지가 있는데 가장 많이 사용하는 2가지를 소개하겠습니다.

A.익명 클래스 이용 이벤트 처리

B. Activity가 OnClickListner 구현


A,B 각각마다 장/단점이 있습니다. 가장 큰 것을 이야기해보자면 익명클래스를 이용해서 이벤트를 만들면 일단 간단하고 쉽습니다. 단, 버튼이 많아지면 중복된 내용이 많아져서 코드가 길어져서 보기가 시러집니다. Activity가 OnClickListner를 구현하면 장점은 버튼이 많아져도 중복된 내용이 거의 없어서 코드가 짧고 보기가 쉽습니다. 단점은 익명클래스보다 약간 귀찮습니다.


A.익명 클래스 이용 이벤트 처리

익명클래스란 이름이없는 클래스입니다.

btn은 아까 우리가 만들었던 Button변수입니다. setOnClickListner란 버튼 클릭했을때를 알려주는 이벤트입니다.

setOnclickListner()안에 매개변수로 OnClickListner를 사용해야하는데 여기서 익명클래스로 바로 new로해서 만들어줬습니다.

onClick는 반드시 구현해야하는 추상메소드입니다.


tv.setText는 텍스트뷰의 내용을 바꿔주는 메소드입니다.  이런 메소드들은 안드로이드 API문서를 보면 다 나와있습니다.


이제 실제로 어플을 실행시켜보겠습니다.

실행화면입니다. 이제 버튼을 클릭해보겠습니다.



변했습니다. 이제 B,C에서도 똑같이 해보겠습니다. 실행 결과는 A,B,C모두 같으므로 B,C에서는 생략하겠습니다.




B. Activity가 OnClickListner 구현

이건 어떤 버튼이 클릭되도 onClick메소드가 실행됩니다. 그래서 swtich로 어떤것이 클릭됬는지 알려줍니다.

코드를 보면 9에서 OnClickListner를 implements합니다. 그리고 19번째 줄에서는 인자값은 자기자신안에 있다고this로 알려줍니다.


A,B중 편한걸로 구현하시면 됩니다.