아래는 코모스튜디오가 직접 만든 무료 앱이에요(한 번만 봐주세요 ^^)
변경될 수 있는(mutable/var) 타입을 캐스팅 할 경우 문제가 생긴다.
이 경우에는 val 불변 타입으로 새로운 변수에 할당 한 뒤에 캐스팅을 해야 한다.
private val plantDetailViewModel: PlantDetailViewModel by viewModels {
InjectorUtils.providePlantDetailViewModelFactory(requireActivity(), args.plantId)
}
val binding = DataBindingUtil.inflate<FragmentPlantDetailBinding>(
inflater, R.layout.fragment_plant_detail, container, false
).apply {
viewModel = plantDetailViewModel
//error beacuse viewModel is defined xml
viewModel.plant.value?.let{}
//no error val type
plantDetailViewModel.plant.value?.let{}
//no error
val vm = plantDetailViewModel
vm.plant.value?.let{}
viewModel.plant.value?. 에러가 발생했는데, 이 viewModel은 xml에 아래와 같이 정의 되어있기 때문이다.
<variable
name="viewModel"
' [안드로이드 공부] > 코틀린' 카테고리의 다른 글
android worker ClassNotFoundException (0) | 2020.09.01 |
---|---|
null cannot be cast to non-null type androidx.appcompat.widget.appcompatimagebutton (0) | 2020.08.22 |
[MVVM] LiveData와 ViewModel Observer로 연결 (0) | 2020.08.07 |
코틀린 생성자와 위임 (0) | 2020.07.27 |
추상클래스(abstract)와 인터페이스(interface) (0) | 2020.07.27 |
모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다. |
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요. |