인프런 커뮤니티 질문&답변

jminie님의 프로필 이미지
jminie

작성한 질문수

냉동코더의 알기 쉬운 Modern Android Development 입문

Practice4B-Safe args로 프래그먼트간 데이터 전달하기 (SafeArgs, Parcelable, WebView)

private val binding get() = _binding!! 과 private val binding = _binding!! 의 차이

작성

·

571

0

이전에 LiveData를 다룰 때는 

private val _mutableLiveData ...

val liveData = _mutableLiveData

이런식으로 get()을 쓰지 않아도 오류가 발생하지 않았던 것 같은데

BookFragment에서 뷰 바인딩을 사용할 때는 get()을 쓰지 않고

private val binding = _binding!!

와 같이 get()을 쓰지 않으면 앱이 could not find Fragment Constructor 오류를 뱉으며 죽습니다. 

 

이유가 무엇인지 궁금합니다.

답변 2

1

jminie님의 프로필 이미지
jminie
질문자

블로그 글을 자세히 읽어보니 이해가 되는 것 같습니다 감사합니다!

0

냉동코더님의 프로필 이미지
냉동코더
지식공유자

`get()` 과 `Assignment (=)`의 차이를 생각해 보면 이유를 짐작할 수 있을 것 같습니다.

`Assignment (=)`를 사용하면 필드값이 바로 지정값으로 할당되지만 `get()`은 값을 할당하지 않고 게터 함수만을 생성하게 됩니다. 구체적인 차이에 대해서는 다음 블로그를 참조해 보세요. https://gift123.tistory.com/59

따라서 `private val binding = _binding!!` 으로 설정하면 onCreateView 이전에 binding의 필드값이 null로 고정되어 버려서 프래그먼트 생성에 실패하는 거 아닐까 싶네요.

jminie님의 프로필 이미지
jminie

작성한 질문수

질문하기