android {
...
buildFeatures { // 뷰 바인딩 활성화
viewBinding true
}
...
}
💜 레이아웃 파일(.xml) 들의 바인딩 클래스 생성
- 첫글자 대문자 (단어단위로 대문자)
- 끝에 바인딩
💚 Activity
ex) activity_main.xml -> ActivityMainBinding
💚 Fragment
ex) fragment_ecobox.xml -> FragmentEcoboxBinding
private var _binding: ActivityMainBinding? = null
// 매번 null 체크를 할 필요 없이 편의성을 위해 바인딩 변수 재 선언
private val binding get() = _binding!!
private var _binding: FragmentEcoboxBinding? = null
// 매번 null 체크를 할 필요 없이 편의성을 위해 바인딩 변수 재 선언
private val binding get() = _binding!!
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// 기존 setContentView 제거
// setContentView(R.layout.activity_main)
setContentView(binding.root) // * setContentView에는 binding.root를 꼭 전달
// inflate라는 메서드를 활용해 액티비티에서 사용할 바인딩 클래스의 인스턴스 생성
_binding = ActivityMainBinding.inflate(layoutInflater)
}
// 액티비티 파괴될 때
override fun onDestroy() {
// onDestroy 에서 binding class 인스턴스 참조를 정리
_binding = null
super.onDestroy()
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// fragment_ecobox 레이아웃 연결
_binding = FragmentEcoboxBinding.inflate(inflater, container, false)
return binding.root
}
// 프래그먼트 파괴될 때
override fun onDestroyView() {
// onDestroyView 에서 binding class 인스턴스 참조를 정리
_binding = null
super.onDestroyView()
}