상세 컨텐츠

본문 제목

0410 TIL - 안드로이드 스튜디오 뷰 바인딩

Kotlin/Today I Learned

by lucar 2025. 4. 10. 19:47

본문

책에는 분명히 바인딩 따위 신경쓰지 않고 

위 사진의 버튼처럼 id가 정해져있다면 activity 코틀린 파일에서 button1로 호출해서 사용했는데

 

내가 해보니까 왜인지 안된다.

그래서 더 찾아보니 바인딩이란걸 해야하나 보다.

 

처음 Empty View로 프로젝트를 생성하면 MainActivity라는 이름의 코틀린 파일은

이렇게 적혀있다. (아마도)

 

책에서는 위의 import 중에 kotlinx.android.synthetic.main.activity_main.* 이라는게 써있다는데

 

찾아보니까 없더라

 

어쨌든 찾아보니 바인딩 방법은

 

build.gradle.kts 파일에

android{

.
. //이미 작성되어 있는 내용들
.

    buildFeatures{
        viewBinding = true
    }
}

 

해당 내용을 작성하고 gradle sync를 작동하면

 

생성된 layout의 이름 별로 작성규칙이 정해진 자동 생성되는 클래스를 직접 바인딩 해줘야한다.

 

레이아웃.xml파일이 있다면  생성되는 클래스의 이름 규칙은 다음과 같다.

 

1. 첫 글자는 대문자로,

2. _(언더바) 는 삭제되며 _ 다음에 오는 글자도 대문자로,

3. 그렇게 작성된 이름의 끝에 Binding이라는 글자가 붙는다.

 

예를 들면 activity_main은 ActivityMainBinding이라는 클래스가 자동으로 생성된다고 한다.

 

그럼 이제 다시 activity파일로 돌아와서 생성한 button의 button1이라는 id를 가진 객체를 가져오려면

다음과 같다.

 

button1.setOnClickListener는 그냥 이벤트 호출이다.

 

우선 val binding을 선언하면서

import (프로젝트ID).databinding.ActivityMainBinding

 

위 문장이 import 되게된다.

setContentView가 처음 프로젝트를 생성하면 상당히 아래 부분에 있어서 끝에 있어야 하는갑다 싶었는데

binding 직후에 붙여주지 않으면 button1이 실행이 안됐었다.

 

나중에 코드 좀 더 뜯어봐야 할 듯

 

일단 TTE

관련글 더보기