티스토리 뷰




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

#안보임




공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
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
글 보관함