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

setContentView() 메소드에 대해 질문드립니다.

0 추천
//안드로이드 초보입니다;;

//ImageExample.java
public class ImageExample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(new ImageView(this));

}
}

//ImageView.java
public class ImageView extends View {
public ImageView(Context context){
super(context);
}
}

위 소스코드에서 ImageExample 클래스에서 setContentView() 함수를 호출하는데, 인자로 this를 받는 ImageView인스턴스를 인자로 받네요???(맞죠?)

그런데 ImageView의 생성자를 보면 Context타입의 context를 인자로 받는 View클래스의 생성자를 호출하던데... 안드로이드 api를 봐도 그냥 뷰를 생성하기 위한 생성자라고 나와있고... 그러면 setContentView 함수가 호출되면서 하는 일의 과정이 자세히 어떻게 됩니까? (너무 복잡하네요ㅜ)

익명사용자 님이 2013년 7월 8일 질문

1개의 답변

0 추천
Context와 this는 같은 의미 입니다.

만약 activity를 extends 받지 않았다면 다른 의미가 되겠지만, activity를 extends를 받았기에 context와 같은 의미 입니다.

setContentView() 과정에 대해서 분석해보지 않아서 정확한 답은 아니지만, setContentView를 통해 넘어온 View(layout xml도 동일)를 해당하는 activity(setContentView는 activity를 extends해야 가능)에 뿌려주고 관련된 정보를 Context에 저장하게 됩니다.
즉, Context에는 해당하는 Activity에 대한 정보를 보관하는 Container라고 보시면 될것 같습니다.
컴천재 (2,580 포인트) 님이 2013년 7월 8일 답변
감사합니다 ^^ 이해가 쉽게 됬어요.
...