아래 import가 안되는 경우 layout에 생성한 오브젝트를 코드에서 id를 통하여 접근하지 못한다.
import kotlinx.android.synthetic.main.activity_main.*
build.gradle 에서 kotlin-android-extensions 플러그인을 추가하고 sync now를 클릭
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-android-extensions")
}
android {
...
}
하지만
최신 안드로이드 버전에는 플러그인을 사용할 수 없다고 나온다....
The 'kotlin-android-extensions' Gradle plugin is no longer supported. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the 'kotlin-parcelize' plugin.
직접 id를 접근하지 말고 View binding을 권장하기 시작했다.
build.gradle 에서 뷰 바인딩을 활성화 하자
android {
...
buildFeatures {
viewBinding = true
}
}
plugins {
...
id("kotlin-parcelize")
}
뷰바인딩 사용방법은 다음과 같다.
1. 액티비티 xml파일이 바인딩 클래스로 변환이 되어 binding 변수로 들어간다.
이때 사용하는 ActivityMainBinding은 바인딩 할 layout 파일 이름으로 자동 생성이 된다.
- val binding by lazy { ActivityMainBinding.inflate (layoutInflater) }
2. setContentView 함수를 통해 액티비티가 쓸 레이아웃을 뷰 바인딩으로 세팅을 해준다.
- setContentView(binding.root)
3. 그 후로 레이아웃 오브젝트 접근할때 binding.[ layout 선언된 오브젝트 ID ] 로 접근하면 된다.
class MainActivity : AppCompatActivity() {
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
....
setContentView(binding.root)
binding.btnsay.setOnClickListener(listener)
}
}
'Andorid Kotlin' 카테고리의 다른 글
GLSurfaceView 배경 투명으로 하는 법 (1) | 2024.10.05 |
---|---|
리사이클 레코드 보여주기 (0) | 2024.10.02 |
액티비티간 데이터 주고 받기 (0) | 2024.10.02 |
common 위젯 사용 (seekBar, toggle, progress bar, spiner (0) | 2024.10.02 |
체크박스 리스너 등록 (1) | 2024.10.02 |