책에는 분명히 바인딩 따위 신경쓰지 않고
위 사진의 버튼처럼 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
0410 TIL - 안드로이드 스튜디오 Gradle 설치 TimeOut 에러 (0) | 2025.04.10 |
---|