안드로이드

delay 혹은 애니메이션 후 이벤트 발생시 binding에러

코딩하는후운 2023. 5. 19. 09:40
반응형

binding null cannot be cast to non-null type VB

베이스 프레그먼트에 binding데이터를 넣어둔뒤
바텀시트 동작시 키보드가 뜨도록 작업이 되어있었습니다.

바텀시트 호출 -> 키보드 올라오는 도중 (해당 화면 종료) -> 바텀시트 내려가면서 키보드 Hide
이미 화면이 종료되어 binding이 null이었습니다!

BaseFragment

이렇게 선언 되어있었는데 null이 됩니다

근데 또 화면에 lateinit으로 된곳은 null이 되지 않는 것 같습니다!?

private lateinit var binding

 

일단 내가 작업하는 소스에는 이렇게 두가지의 코딩이 있었습니다.

1. 번의 해결은 화면이 종료되었는지 판단하여서 호출하지 않도록 해결

open val isAttachedView: Boolean
    get() = activity != null && isAdded && !isFinishing
open val isFinishing: Boolean
    get() = activity == null || requireActivity().isFinishing

 2. 번의 해결은
binding이 null이 아니었으므로 키보드 내릴 때 InputMethodManager를 null체크!
lateinit으로 선언 했을 때에는 if (::binding.isInitialized) { 이렇게도 binding체크를 해볼 수도 있겠네요!

저는 1번의 해결방법으로 해결 하였습니다!!

참조 :
같은회사 브래들리의 조언 bb

반응형