본문 바로가기

안드로이드앱 코딩_AndroidApp/안드로이드 스튜디오

첫 프로젝트 만들기_10_코딩_버튼

버튼 작동을 위한 코딩

 

지금까지 프로젝트의 디자인과 레이아웃을 완성했다.

이제 코드를 작성할 시간이다.

 

디자인에서 만든 부분들 중에는 사용자와 상호대화가 필요한 컴퍼넌트들이 있다.

대표적인 것이 버튼이다.

버튼을 눌렀을 때 수행할 작업의 내용은 직접 프로그래밍 언어로 작성해야 한다.

여기서는 코틀린을 사용한다고 했다.

 

코드 작업은 프로젝트 생성할 때 기본적으로 만들어진 MainActivity.kt 파일에 작성한다.

 

MainActivity파일을 열어보자.

Java 폴더 안에는 com. 으로 시작하는 이름이 같은 폴더가 3개 있다.

끝에 괄호가 있는 폴더 2개는 테스트에 사용하는데 다음에 그 용도를 알아보기로 하고

여기서는 첫번째 폴더(com.~)에 있는 MainActivity를 더블클릭한다.

MainActivity.kt 탭이 오른쪽에 열리고 기본적으로 작성되어 있는 코드가 나타난다.

주황색 코드를 보면 전체적인 구조를 알 수 있다.

제일 위에 package가 있고

그 아래 코드 작동에 필요한 라이브러리가 import로 불러와 등록되어 있다.

그 아래 class(클래스)가 있고 클래스 이름은 MainActivity이다.

클래스 안에는 override된 함수 onCreate가 있다.

이 함수가 프로젝트에서 제일 먼저 실행되는 함수다.

 

코드를 작성하다 보면 필요한 라이브러리 등이 생긴다.

그럴 때 일일이 등록해 줘야 하는데 이런 작업을 자동으로 해 주는 기능이 있다.

메뉴에서 File > Settings를 누른 후 Auto import 에서 설정할 수 있다.

 

간단히 이 정도만 둘러보고 자세한 내용은 다음에 살펴본다.

코드를 작성하자.

 

버튼 코드 작성 

 

코드를 입력할 곳은 onCreate()함수 실행 부분의 제일 끝에서 부터 시작한다.

 

  1. 마지막 줄 끝 activity_main의 괄호 다음에 커서를 놓는다.
  2. 엔터키를 2번 친다.
  3. count를 입력한다.

 

count만 입력하면 c로 시작하는 자동 완성 목록을 보여준다.

이것은 입력을 편하게 도와주는 기능이다.

방향키로 원하는 부분으로 이동하여 파란색일 때 엔터키를 치면 자동으로 입력해 준다.

 

그런데 지금 입력할 내용은 디자인 창에서 만들었던 버튼 View의 참조를 넣을 변수를 만들어야 하는데

자동 완성에서 버튼의 아이디(count_button)와 텍스트뷰의 아이디(count_textView)가 나타나서 불편하게 한다.

이런 점이 불편하다면 자동완성 옵션에서 조절하면 된다.

 

자동 완성 기능의 옵션을 조절하려면 code completion에서 선택한 후

Match case에서 All letters를 선택해 놓으면 된다.

이 옵션은 입력하는 문자와 완전히 일치할 때 자동완성 옵션이 나타나게 하는 것이다.

나머지는 일단 위와 같이 해 놓고 불편한 문제가 생기면 여기로 와서 수정하면 된다.

예를 들면 만약 옆에 붙어 나오는 설명문 팝업이 귀찮으면 옵션 중에서 Show the documentation popup 부분을 체크 해제하면 된다.

 

버튼 변수 만들기

 

다시 본론으로 돌아와서

처음 만들 것은 버튼 View(디자인 창에서 만든 객체를 View라고 함)를 담을 변수다.

변수 이름은 countButton 으로 하자.

변수 이름은 이렇게 camelType(낙타 형)으로 만드는 것이 좋다고 했다.

물론 위 규칙은 관행이므로 마음에 안들면 자신만의 규칙을 만들어서 사용해도 된다.

변수를 아직 선언하지 않았기 때문에 빨간색으로 나타난다.

 

이제 이 변수에 디자인 창의 버튼을 연결(참조)해야 한다.

 

코드 편집창에서 디자인 창의 component(컴퍼넌트)를 불러올 때는 해당 object(객체)의 id를 참조한다.

앞에서 버튼을 만들고 id를 count_button으로 정한 것을 기억할 것이다.

그리고 객체 참조에 사용하는 함수는 findViewById( ) 함수이다.

함수 이름(id로 뷰를 찾아라)만 봐도 무슨 기능인지 대충 알 수 있을 것 같다. 

 

변수에 값을 넣기 위해 = 기호를 입력한다.

코틀린에서 변수에 값을 바꿀 때와 같다.

계속해서 find를 입력하자.

자동 완성 목록이 나타날 것이다.

 

참고로 자동완성 기능은 편리하지만 함수 코드를 외우는데는 별로 도움이 안된다.

그러므로 초보일 때는 되도록이면 자동완성은 참고만 하고 직접 코드를 입력하는 것이 좋다.

그래야 더 잘 외워진다.

 

계속해서 위와 같이 <Button>을 입력하고 괄호()안에 대문자 R을 입력한다.

안드로이드 스튜디오의 버전이 3.5 이하인 경우에는 <Button> 부분이 필요 없을 수도 있다.

괄호 안에는 버튼이 있는 위치를 적어야 하는 곳이다.

그래서 resource(리소스)를 나타내는 첫글자 R로 시작한다.

연결점( . )을 찍고 id 와 count_button을 입력한다.

완성하면 아래와 같다.

방금 완성한 코드의 뜻은 다음과 같다.

 

변수 countButton에 값을 넣는다(=)

id로 뷰를 찾아라 <버튼이다> (리소스에 id는 count_button이다)

 

이제 문제가 있는 빨간색 변수를 해결하자.

빨간색은 아직 변수를 선언하지 않았다는 뜻이다.

변수는 제일 먼저 선언하고 초기화(최초값 넣기)를 해야 한다고 코틀린 변수 글에서 설명했다.

변수를 선언하자.

onCreate() 함수 위로 커서를 옮긴다.

아래와 같이 코드를 입력하여 변수를 선언한다.

변수이름과 Type(타입)을 입력했다.

전체에 빨간줄이 생기고 왼쪽에는 경고등도 표시된다.

아마 초기화(initialization; 첫 값을 넣는것)를 하지 않았다는 경고일 것이다.

경고등으로 마우스 포인터를 옮긴 후 삼각형을 클릭하면 해결할 수 있는 옵션들이 나타날 것이다.

초보의 입장에서는 해결책을 보고도 뭘 선택해야 하는지 모른다.

하지만 코틀린 학습과 안스를 자주 다루다 보면 감이 올 것이다.

어쨌든 여기서는 변수를 선언한 후 초기화를 하지 않았기 때문에 초기화를 나중으로 미루는 'lateinit'을 선택하면 된다.

lateinit (늦은 초기화)에 대해서는 코틀린에서 따로 글을 적을 것이다.

제일 위(Add 'lateinit' modifier)를 선택한 후 엔터키를 친다.

 

완성한 코드는 다음과 같다.

다음 글에서 계속한다.

끝.