마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Linear layout과 Frame layout Type Cast 에러

0 추천

기존에 안드로이드 2.3.3 (진저브레드)에서 개발한 앱을 안드로이드 4.2.2(젤리빈)으로 변경하려고 합니다.

그러던 중 layout 클래스 cast부분에서 에러가 났는데 원인을 찾을 수 없습니다.

FrameLayout firstView = (FrameLayout) view.getChildAt(0);

진저브레드에서는 위와같이 캐스팅을 하여 문제없이 잘 실행이 되었었는데, 젤리빈에서는 

저 부분이 Caused by: java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to android.widget.FrameLayout 이라는 오류메시지가 뜹니다. 캐스팅 부분을 

LinearLayout firstView = (LinearLayout) view.getChildAt(0);

위와 같이 변경하면 저 부분은 넘어가지만 다른것들을 처리하는 것에 있어서 문제가 발생하여 마음대로 바꾸지 못하는 상태입니다. 

디버깅을 걸어서 view.getChildAt(0)을 확인해보면 진저브레드에서는 FrameLayout으로 나오며

젤리빈에서는 LinearLayout으로 나오는 것을 확인하였습니다.

안드로이드 버전이 업데이트 되면서 발생한 문제인지, 아니면 안드로이드 버전과 관계없이 기기마다 차이가 있는 것인지 많은 사이트들을 돌아봤지만 원인을 찾을 수 없어 답답한 마음에 질문드립니다. 

이 상황에 대해서 아시는 분들은 답변 부탁드립니다. 감사합니다.

 

수빈수빈 (140 포인트) 님이 2018년 10월 19일 질문

1개의 답변

0 추천
instanceof 로 비교해서 캐스팅을 나누거나 os 버전으로 나눠서 코딩하세요
aucd29 (218,390 포인트) 님이 2018년 10월 25일 답변
...