코틀린 입문하여 튜토리얼중에 오류가 발생해 질문을 하였더니
오픈방에서 한 유저분이 이렇게 말씀해주셔서 찾아보게 되었다
감사합니다 개미님!
viewBinding
- viewBinding 이란 뷰와 상호작용하는 코드
- xml의 뷰와 class를 연결해준다
- findViewById보다 더 쉽고 더 좋다
- 구글에서 일부러 우리보고 사용하라고 더 좋은걸 만들어줬다
- 코드가 간결해져 가독성 상승
- NullPointerException 방지
- class Cast Exception 방지
사용법
bulid.gradle(Module) 에다가 아래코드를 추가해준다
buildFeatures {
viewBinding true
}
gradle을 수정 했기에 위에 문구가 뜨고 Sync Now 를 클릭해준다!
MainActivity에서 다음 코드를 추가한다
class MainActivity : AppCompatActivity(){
// 바인딩할 xml
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 초기화 & xml 코드를 객체화
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
}
}
xml에서 사용할 객체의 id값을
이렇게 사용하면 된다!
****** 바인딩 규칙 *******
xml의 이름이 Pascal 형식으로 바뀌고 뒤에 Binding이 붙는다
(e.g.)
activity_main.xml -> ActivityMainBinding
asd_asd_qwe.xml -> AsdAsdQweBinding
(e.g.)
아래 사진 처럼 만들게 되면
MinSang 이렇게 activity를 만들면!
xml 파일은
activity_min_sang.xml이 되고
이때 바인딩은 ActivityMinSangBinding이 된다
*****************
********
root 뷰는?
binding.root 에서 root는 뭘까?
최상위 뷰로서 모든 뷰를 포함하기 때문에
하위 뷰에 접근가능!!!
자세한건 여기를 참고하자!
inflate란?
https://velog.io/@appletorch/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Inflate%EC%9D%B4%EB%9E%80
안드로이드 Inflate이란?
Inflate란? 사전적 정의로 '부풀리다, 올리다'라는 의미를 가지고 있다. 그렇다면 무엇을 부풀린다는 걸까? 안드로이드에서 inflate는 xml에 표기된
velog.io
자세한 설명
https://todaycode.tistory.com/29
안드로이드 뷰 바인딩(view binding)
1. 뷰 바인딩 1-1. 라떼는 말이야... 1-2. 변천사 1-3. findViewById와의 차이점 2. 사용법 2-1. gradle 추가 2-2. 액티비티 2-3. 프래그먼트 2-4. viewBindingIgnore 1. 뷰 바인딩 1-1. 라떼는 말이야... 예를 들어, xml에
todaycode.tistory.com