ViewBinding
- xml파일과 class파일을 연결해주는 기능
- xml상에 있는 파일들을 코틀린 코드에서 활용하기 위한 바인딩 작업 (메모리 상에 업로드)
- NullPointException해결
- xml파일과 class파일을 연결하면서 코드가독성↑
1. Gradle 선언 (모듈 단위 gradle파일)
android{
viewBinding{
enabled true
}
...
}
2. viewBinding 전역변수로 선언
lateinit var binding: ActivityMainBinding // ↔ activity_main.xml
3. onCreate()함수에서 바인딩 초기화 해준다
override fun onCreate(savedInstance: Bundle?){
supser.onCreate(savedInstance)
//inflate : xml에 표기된 레이아웃들을 메모리에 객체화 시키는 함수
binding = ActivityMainBinding.inflate(layoutInflater) //바인딩 초기화
//root부분 ctrl클릭시, xml파일의 최상단 뷰를 가리키는 것을 알 수 있음
setContentView(binding.root) //이제 xml뷰를 마음대로 쓸 수 있음
}
전체코드 :
class MainActivity: AppCompatActivity() {
lateinit var binding: ActivityMainBinding // <-> activity_main.xml
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//클래스를 인스턴스화 -> 메모리에 올리기
binding = ActivityMainBinding.inflate(layoutInflater) //xml 뷰를 메모리에 객체화 시키는
setContentView(binding.root) //루트 전체: 레이아웃 하위 뷰 모두 담기
}
}
4. binding.뷰id.~ 의 구조로 사용 가능
binding.btn_1.setOnClickListener{
//...
}
'Android > Android Studio' 카테고리의 다른 글
[안드로이드/Kotlin] ViewPager2 + TabLayout 사용 (0) | 2022.05.12 |
---|---|
[안드로이드/Kotlin] BottomNavigationView 사용, Fragment 전환 (0) | 2022.05.12 |
[안드로이드/Kotlin] BottomSheetDialog 사용 (0) | 2022.04.24 |
[안드로이드] ImageView, Button 모서리 둥글게 하기 (0) | 2022.04.24 |
[안드로이드] ConstraintLayout 제약 & 이미지뷰 scaleType (0) | 2022.04.07 |