안드로이드 프로그래밍 - 버튼 이벤트 실습 선수과정


이번 시간에는 스마트폰 화면에 버튼을 만들고 버튼을 클릭할 때 이벤트를 발생하는 것을 실습하겠습니다.
이전 강좌와 이어지는 내용이므로 실습을 제대로 진행하기 위해서 이전 포스팅 내용을 확인하고 진행바랍니다.


스마트폰에 출력하는 텍스트 문구 변경해보기


지난시간에 아래 화면과 같이 가상의 안드로이드 스마트폰에 Hello World 라는 문구를 출력하는 것을 학습하였습니다.
버튼을 생성하기에 앞서서 이전에 실습했던 어플리케이션(Application)에서 입력하지도 않은 Hello world!라는 문구가 어디에서 설정되어 있는지 소스를 찾아서 확인해보겠습니다.



이클립스에서 MainActivity.java 소스를 열어보겠습니다. 
아래 소스를 살펴보면 Java의 표준 문법에서 보이는 Java의 시작을 알리는 main() 함수가 존재하지 않습니다.
그렇다면 어디서 Hello world!라는 문구를 표시하게 하는 것일까요?

아래 setContentView(R.layout.activity_main); 함수 부분을 보겠습니다. setContentView() 함수에 인자로 쓰인 R.layout.activity_main 부분에 열쇠가 있습니다.



왼쪽 네비게인션 화면의 HelloJava 프로젝트의 res폴더를 펼쳐 보도록합니다. res > layout 폴더를 열면 activity_main.xml 이라는 화일이 있습니다. activity_main.xml 화일을 클릭해 보도록 하겠습니다.  클릭하면 오른쪽 화면에 디자인 설계를 하는 Graphical Layout 화면이 나타납니다. Graphical Layout 탭옆의 activity_mail.xml 탭을 클릭합니다.


activity_main.xml 탭을 클릭하면 아래 화면과 같이 activity_main.xml에 대한 소스 화면이 보입니다. xml소스안에도 Hello world라는 문구는 보이지 않습니다.

그렇다면 실제 텍스트 문구를 나태내는 String 문자에 대한 정의를 해두는 곳이 있을 것입니다.
<TextView /> 태그안을 살펴보면 @string/hello_world 부분이 있습니다. 이곳이 String 문자를 별도 정의한 부분입니다.



res/values 폴더를 클릭합니다. 이곳에 strings.xml과 styles.xml 화일이 존재합니다.



strings.xml 화일을 클릭하면 오른쪽에 다음과 같은 화면이 나타납니다.



오른쪽 화면에서 hello_world (String) 항목을 클릭하면 Value값에 Hellow world! 라는 문구를 찾을 수 있습니다
하단의 Resources 탭옆에 strings.xml 탭을 클릭합니다.



조금전 Resource 탭에서는 UI 형태로 값을 입력할 수 있지만 strings.xml 탭을 클릭하면 xml 소스코드를 그대로 볼 수 있습니다.
소스안의 hello_world라는 string 태그안에 Hello world!라는 String 문자를 발견할 수 있습니다.

문자가 출력되는 소스의 연결고리를 정리해보면 /res/values/strings.xml 소스의 hello_world는 /res/layout/activity_main.xml 안의 @string/hello_world와 연결되어 참조되고 activity_main.xml 는 /src/MainActivity.java 안의 setContentView(); 함수에 R.layout.activity_main 라는 파라미터로 전달되어짐을 알수 있습니다.




그러면 string 문자를 다음과 화면과 같이 안녕 Java라고 변경하고 어플리케이션을 재실행시킵니다. 재실행 단축키는 Ctrl + F11 입니다.



안드로이드 어플리케이션을 재실행 시키면 에뮬레이터인 가상의 스마트폰에서 실행결과가 나타납니다. 아래 화면과 같이 출력 문구가 변경되는 것을 확인할 수 있습니다.




스마트폰에 버튼만들기


버튼을 만들기 위해서 이번에는 activity_main.xml 화일안의 <TextView> 태크를 <Button>이라는 이름의 태그로 변경합니다.
변경된 소스를 저장한 뒤 어플리케이션을 재실행(Ctrl + F11) 합니다


어플리케이션이 재실행되고 나니 텍스트였던 부분이 버튼으로 변경된 것을 확인할 수 있습니다.



버튼 클릭 이벤트 발생시키기


이번에는 버튼을 클릭했을때 버튼 클릭 이벤트를 발생시키도록 하겠습니다.
버튼 클릭 이벤트를 발생시키기 위해서는 두 가지 작업을 진행하면 됩니다.

첫번째는 xml 화일인 activity_main.xml에 정의된 버튼의 ID를 추가합니다.
이벤트 발생을 시키려면 <Button> 태그안의 속성에 ID 속성을 추가해야합니다.
ID속성은 @+id 을 표기하여 지정합니다. 
 
형식 : @+id/정의하려는 이름
사용예) @+id/startBtn



두번째는 Java 화일인 MainActivity.java에 정의된 버튼의 이벤트 처리 코드를 추가합니다.

onCreate() 메소드 안에 Button 클래스를 생성하고findViewById() 함수로 xml에 정의되 startBtn ID 값을 매핑시킵니다.


Button 클래스의 setOnClickListener() 메소드를 활용해서 클릭이벤트를 Listening 합니다.



클릭시에 필요한 onClick() 메소드를 활용합니다.


메시지를 보여주기 위해서 Toast 클래스를 사용합니다.

            
완성된 소스 코드는 다음과 같습니다.



어플이케이션을 실행해서 버튼을 클릭하면 버튼 클릭이벤트가 아래 화면과 같이 제대로 동작하는 것을 확인할 수 있습니다.



유용한 이클립스 단축키 Tip)
Ctrl + Shift + O : 이클립스가 필요한 자바 Class를 자동으로 import 해줍니다.


+ Recent posts