관계, Networking 그리고 Programming

Android developer 사이트를 볼 때 주의점 : MUST를 잘 검색하자.

androbook 본캐 2013. 5. 27. 19:54

퇴사하기 직전까지의 1년간의 안드로이드 프로젝트에서는 거의 관리 일을 하다보니 소스를 자세히 보거나 코딩할 기회가 많지 않았다. 따라서 새로 내 프로젝트를 만드는 이 시점에서는 안드로이드 소스를 하나하나 뜯어보며 코딩을 하다보니 요즘 글 쓰기에도 코딩 관련 글을 자주 올리게 된다. 공개한 것 보다도 혼자 끄적거리는 것들이 더 많은데, 비공개로 닫아 놓은 게시물들은 주로, 관련 내용을 다 쓰기 너무 벅차서 일부만 올려놓고 혼자 보고 있는 것들이다. 프로젝트를 하나 마친 후에는 안드로이드에 관한 내용을 한 번 싹 정리해봐야겠다고도 생각 중이다.


오늘은 ListActivity를 상속받은 activity를 만들다가 에러 하나를 찾았는데, Your content must have a ListView whose id attribute is 'android.R.id.list' 라는 놈이 그 놈이었다. 아무 생각 없이 ListView 하나를 포함하는 xml을 만들고, activity에 이 놈을 매칭 시켰더니, 자꾸 요런 에러가 뜨더라는 말씀이다. 항상 가장 빠른 길은 에러를 잘 해석하고 제대로 검색해서 원인을 찾아내는 것이건만, 번번히 대충보고 대충 수정하다가 시간을 더 까먹는다.


이 에러는 영어로 쓰인 그대로 "당신의 컨텐츠는 반드시 android.R.id.list라는 어트리뷰트를 가지는 ListView를 포함해야 한다"는 것이다. 내가 만든 xml상에서도 ListView를 포함하고 있지만, 그 id가 시스템에서 원하는 저 이름이 아니기 때문에 에러가 발생한다. 사실 ListActivity라는 클래스를 포함하는 것 자체로, 이 activity에서는 안드로이드에서 기본적으로 제공하는 android.R.id.list 리소스를 사용하게 되는데, 이를 이용하지 않고 내가 만든 xml을 사용하려 끼워 넣으니 원하는 이름의 ListView가 없다고 튕겨내는 것이다.


따라서 이 문제는 xml의 ListView id를 list로 바꾸어 주면 해결된다.



문제가 되던 xml 소스 : 

        <ListView

            android:id="@android:id/ecrate_list"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_weight="1" >

        </ListView>


수정된 xml 소스 :

        <ListView

            android:id="@android:id/list"

            android:layout_width="match_parent"

            android:layout_height="wrap_content"

            android:layout_weight="1" >

        </ListView>



일단 수정은 해놓고, 안드로이드 개발자 사이트에 다시 들어가 ListActivity를 검색해 보니 다음과 같이 명시되어 있다.


To do this, your own view MUST contain a ListView object with the id "@android:id/list"


내가 수정한 것이 아니고 정말 must라는 단어가 저렇게 대문자로 강조 되어 있다.ㅋㅋㅋㅋㅋㅋㅋ must라는 단어로 이 페이지에서 검색해 보니 총 4개의 문장이 나오더라는. 개발자 사이트에 must라고 적힌 내용을 과감하게 지나치지 말자. 결국 에러가 발생하고 시간을 까먹게 된다. 반드시 포함시켜야 하는 것들을 제대로 캐치하기. 잊지말자.







와 이래 비가 많이 오노.

낼은 새 사무실에 가는 날인데.

비야~ 오늘 밤에 많~이 내리고 내일은 조금만 내리자. 응?


from. tumblr