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

findViewById 로 구해진 객체의 생성시점은 언제인지...??

0 추천
PianoView scroll = (PianoView) findViewById(R.id.scroll_view);
        Keyboard2 piano = (Keyboard2) findViewById(R.id.piano_key);
        scroll.setPiano(piano);  //여기서 에러가납니다  뭐가잘못되었나요???

 

findViewById 로 구해진 객체의 생성시점은 언제인지...??

위에서 piano 의 width 값을 구해서 scroll 의 width 값을 셋팅하려면

어떻게해야되는지 궁금합니다
참참참 (3,100 포인트) 님이 2014년 4월 29일 질문

1개의 답변

+2 추천
View의 생성 시점은 LayoutInflater가 끝나는 시점인데요.

Activity의 setContentView() 호출 후 리턴을 받았을 때 혹은 LayoutInflater 를 이용하여 inflate()를 호출 후 리턴 받았을 때 생성이 되요.

findViewById(...) 의 경우 View의 Tree를 타고 오면서 해당 ID와 동일한 View 객체를 리턴하여 주는데, 말씀하신 부분에서 에러가 난건 null Exception 인가요? R.id.scroll_view 를 못찾아서 발생한 현상 같은데, View 객체를 따로 생성을 하였나요? setContentView()가 아니라, 특정 뷰를 코드상에서 Inflate 하였으면 addView() 까지 하셔야 Activity View Tree에서 해당 View를 찾을 수 있을 꺼에요. addView()가 되지 않은 상태에서는 View의 findViewById() 함수를 이용해 보세요

http://developer.android.com/reference/android/view/View.html

 

View 의 width 설정은 LayoutParams 관련하여 검색해 보시면 방법을 찾을 수 있을 것 같아요.

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html
익명사용자 님이 2014년 4월 29일 답변
...