본문 바로가기

Application/Android Kotlin

[Kotlin] view binding 코드 해석 (var, val, lateinit, nullable)

private lateinit var auth: FirebaseAuth
private var _binding: FragmentEmailpasswordBinding? = null
private val binding: FragmentEmailpasswordBinding
	get() = _binding!!

 

 

위의 코틀린 코드를 읽기 위해서 필요한 지식을 공부해보았다. 

var 와 val

var 키워드로 선언된 변수는 값을 변경할 수 있는 반면에, val 키위드로 선언된 변수는 한번 초기화되면 값을 변경할 수 없다.

lateinit 

변수를 선언할 때, 초기 값을 할당하는 것이 아니고 나중에 필요한 시점에 값을 할당할 수 있다. 

view binding

안드로이드 앱 개발에서 UI 요소와 XML 레이아웃 파일을 연결하고 간편하게 사용할 수 있는 방법을 제공하는 기술이다. View Binding을 사용하면 개발자는 findViewById()와 같은 번거로운 작업을 피하고, 안전하고 효율적으로 UI 요소에 접근할 수 있다.

?는 kotlin에서 nullable 값을 나타내는 연산자이다. 변수가 null을 가질 수 있게 한다. 

 

!!

!!는 Kotlin에서 "non-nullable" 값을 나타내는 연산자이다. 만일 해당 변수가 null 인 경우, 예외를 발생시킨다. 

 

get() 

get()은 Kotlin에서 프로퍼티를 정의할 때 사용되는 특별한 함수이다. 이 함수는 해당 프로퍼티에 접근할 때 호출되며, 프로퍼티의 값을 반환한다. 위의 코드에서 binding이라는 프로퍼티에 접근하면 _binding이 null이 아닌 경우에는 _binding을 반환하고, null인 경우에는 예외를 발생시키게 된다. 


 

위의 지식을 토대로 코드를 아래와 같이 이해할 수 있다.

private lateinit var auth: FirebaseAuth

 

Firebase Authentication을 처리하기 위한 FirebaseAuth 객체를 나타낸다. lateinit 키워드를 사용하여 이 객체가 나중에 초기화될 것임을 나타낸다.

private var _binding: FragmentEmailpasswordBinding? = null
private val binding: FragmentEmailpasswordBinding
	get() = _binding!!

 

  • _binding은 FragmentEmailpasswordBinding 타입의 nullable 변수로, View Binding 객체를 저장한다. 이 변수는 초기에 null로 설정되어 있다.
  • binding은 FragmentEmailpasswordBinding 타입의 non-nullable 변수로, _binding 변수를 감싸고 있다. binding 프로퍼티는 _binding이 null이 아니라고 가정하고 반환하도록 설정되어 있다.

이러한 구조를 사용하면 View Binding을 사용하여 Fragment의 XML 레이아웃과 상호 작용할 때 간단하게 접근할 수 있으며, null 체크를 하지 않아도 된다.

예를 들어, binding.textView와 같이 View Binding을 통해 XML 레이아웃의 TextView에 접근할 수 있다.