개발
안드로이드 코틀린 : viewbinding
kks950115
2024. 1. 5. 21:45
728x90
xml 안에 있는 엘리먼트에 접근하려면 findViewById (R.id.textViewId) 와 viewbinding 을 사용할 수 있다.
findViewById 은 수동, viewbinding 은 자동 이라고 생각하면 편하다.
둘 다 사용하면 되는거 아니야? 라고 생각할 수 있지만 viewbinding 사용을 권장한다.
왜일까?
findViewById는 직접 프로그래머가 지정하는 것이다. 그러다보니 실제 동작과 의도가 다를 경우 예외를 발생시킬 수 있다.
예를 들어 해당 엘리먼트를 찾을 수 없어 null예외가 발생한다거나 예상한 것과 다른 타입이 들어와서 ClassCast 예외를 일으킬 수 있다.
반면 viewbinding은 xml뷰를 객체로 만들어 처리하기 때문에 번거롭게 findViewById 로 하나하나 지정해 줄 필요 없다. 형타입 문제 역시 컴파일 단계에서 알 수 있기 때문에 viewbing을 하는 것이 편하고 예외도 예방할 수 있다.
다음은 viewbinding을 설정하는 방법이다.
build.gradle.kts
android {
buildFeatures {
viewBinding = true
}
}
MainActivity.kt
class MainActivity : AppCompatActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } // 요 부분 추가. ActivityMainBinding 부분은 해당 클래스이름에 따라 바뀐다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root) // R.layout.activity_main을 binding.root로 변경
binding.tvPlace.text="asdf" //지정한 바인딩 변수.xml아이디 속성.~~ 이런 식으로 쓰면 된다.
}
}
728x90
반응형