티스토리 뷰
(Android) failed to instantiate one or more classes ..
ywlee 2018. 10. 23. 10:26증상
Failed to instantiate one or more classes
메세지와 함께 xml 에 특정 레이아웃이 표시되지 않는다.
(주로 custom view 에서 발생하는 문제)
xml preview 에서는 해당 뷰가 나오지 않는데, build 시엔 정상적으로 나온다
검색
해당 문제는 주로 검색해보면,
앱 테마와 관련된 내용이 나온다.
내 (그리고 앱 테마로 해결되지 않는 이 글을 보는 분들의) 경우에는 앱 테마 문제는 아니었다.
원인
IDE (android studio) 에서는 preview 를 보여줄 때 build? 해서 보여주게 되는데..
이 때 build 과정에서 문제가 있는 것으로 보인다.
주로 custom view class 가 create 되면서 동시에 통신을 한다던가...
IDE 의 범위 밖으로 벗어나는 일을 할때.
문제점 디버깅
나의 경우 문제가 되는 xml 구조는 아래와 같았다.
<Constraint>
<!-- 얘가 안보임 -->
<com.test.myproject.TestClass .. />
<ScrollView>
</ScrollView>
</Constraint>
해당 TestClass 의 java 코드는 아래와 같았다.
class TestClass {
onCreate() {
// init View..
getDataFromServer();
}
void getDataFromServer() {
// HTTP API using Retrofit
}
}
위 코드를 보면 알 수 있듯이 xml 에서는 Custom Class 가 생성되자마자 Retrofit 을 이용하여 http 통신을 하게 된다.
(여기에는 GSON Library 도 포함되어있다.)
물론, 이 코드를 build 하여 실제 폰에 올려보면 아무 문제 없이 레이아웃도 잘 나오고 모든것들이 정상동작한다.
그러나, xml preview 에는 gson library 의 특정 함수를 찾을 수 없어서 android studio 가 그릴수 없다고 나오며 해당 레이아웃이 그려지지 않는다.
해결
궁극적인 해결책은 아니다. 아마도 안드로이드 스튜디오에서 preview 를 그릴때, 의존성 관련하여 어떤 버그같은것이 있는 게 아닐까 싶다..
그래도 우리는 xml 에서 preview를 보아야 하니까..
나의 경우는 위의 java 코드에 gson 이 문제되는것을 발견하고,
xml preview를 볼때
class TestClass {
onCreate() {
// init View..
// 문제가 되는 부분의 블럭을 주석처리
//getDataFromServer();
}
void getDataFromServer() {
// HTTP API using Retrofit
}
}
위 java 코드처럼 문제가 되는 부분을 주석처리하여
clean -> build 하면 xml preview 에서도 정상적으로 보였다.
#안드로이드
#xml
#preview
#안보임
'Computer > Android&iOS' 카테고리의 다른 글
(Android) Recycler View 선택된 항목 변경 성능 이슈 (1) | 2018.11.07 |
---|---|
(Android) RecyclerView 다시 그릴때마다 간격이 벌어지는 현상 (0) | 2018.11.06 |
(Android) PNG 투명영역 미터치 처리 (0) | 2018.10.15 |
(Android) binary xml file line #0 error inflating class (0) | 2018.10.05 |
(Android) this typically happens when there is an infinite loop or unbounded... (0) | 2018.10.04 |
- Total
- Today
- Yesterday
- 서버
- GIT
- C언어
- linux
- CentOS
- Kotlin
- 스위프트
- git hub
- node.js
- 배열
- 안드로이드
- 리눅스
- php
- BBC 가쉽
- Phaser
- 노드
- Asterisk
- C
- Swift
- 뉴스룸
- 깃헙
- Android
- 손석희
- mysql
- IOS
- Node
- nodejs
- xcode
- 앵커브리핑
- 점유율
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |