반응형
build.gradle에 viewBinding 허용해준다.
android {
...
viewBinding {
enabled = true
}
}
onCreateView 메서드에서
1. 정적 inflate()메서드 호출한다. 프래그먼트에서 사용할 결합 클래스 인스턴스가 생성된다.'
2. getRoot() 메서드를 호출하거나 Kotlin 속성 구문을 사용하여 루트 뷰 참조를 가져온다.
3. onCrateView(). 메서드에서 루트 뷰를 반환한다.
private var lBinding: FragmentMainReservationBinding? = null
private val binding get() = lBinding!!
override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View {
lBinding = FragmentMainReservationBinding.inflate(inflater, container, false)
return binding.root
//return inflater.inflate(R.layout.fragment_main_reservation, container, false)
}
override fun onDestroy() {
super.onDestroy()
lBinding = null
}
onViewCreated에서 Binding 사용할 수 있다.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnCheck.setOnClickListener{
//버튼 클릭하면 할 동작
}
}
갑자기 Fragment 생명주기가 왜 나오나 싶겠지만...
onCreate에서 binding.btn은 대뜸 하려는 바보같은 시도는 다시 하지 않길 바라며..
activity에서 흔히 쓰는 onCreate에서 binding하면 당연히 될 줄 알았는데..
onCreateView에서(뷰가 생성될때) 바인딩 연결 해놓고, 해당 메서드 실행도 전에 onCreate에서(프래그먼트 생성될떄, 뷰 생성 전) 바인딩 쓰려고 하니 당연히 안된다.
https://developer.android.com/topic/libraries/view-binding?hl=ko
'IT > Android' 카테고리의 다른 글
안드로이드 스튜디오 / koin - Retrofit에 로그 및 헤더 추가 (0) | 2022.03.07 |
---|---|
ACC의 ViewModel (!=MVVM의 ViewModel) (0) | 2022.02.22 |
Socket 네트워크 (0) | 2022.01.25 |
안드로이드 스튜디오 / setOnNavigationItemSelectedListener Deprecated (0) | 2022.01.10 |
안드로이드 스튜디오 / 유용한 단축키 모음 (0) | 2021.12.16 |