지난학기 안드로이드 텀프로젝트때문에 안드로이드 프로그램도 하나 완성했고,
이번학기에도 간단한걸 하나 만들어야 해서 막 만들기 시작하는데 갑자기 멘붕이오네요
우선 코드가
public class MainActivity extends Activity {
LinearLayout m;
TextView t;
@Override
protected void onCreate(Bundle savedInstanceState) {
m = (LinearLayout) findViewById(R.id.aaa);
t = (TextView) findViewById(R.id.bbb);
t.setText("test");
m.addView(t);
setContentView(m);
}
}
이렇게 아주 간단하고,
xml에는 linearlayout안에 textview 하나 있습니다.
핸드폰에다 컴파일하면 force close 되는데
이렇게 쓰면 되지않나요 ㄷㄷㄷㄷ 멘붕오네요....................................ㅎ
xml상에서 LinearLayout에 id지정해줘서 oncreate시 findViewById로 찾아서 할수 있는걸로 아는데
R.layout.xml로 setContentView 하는거 말고 나중에 코드상에서 넣어줄게 있어서 id로 찾아야해요
그리고 setContentView랑 findViewById 순서는 상관없지 않나요 원래?
말씀하신 aaa 와 bbb 가 xml상에서 정의되어 있기 때문에
setContentView를 먼저 해 주셔야 하는 게 맞는 거 같습니다.
그리고 setContentView로 R.layout._____ 이렇게 해 주시고 그 후에도 코드로 넣어줄수 있는 것은 아실텐데요?
setContentView는 가장 우선적인 행위입니다.
findViewById가 뭐에쓰이는 메서드인가요?
R.id에서 id값을 불러오는거 아닌가요?ㅎ
R.id값은 어디서오는걸까요.
setContentView(xml)을 해야 xml파일안에있는 id값들이 R.java 파일로 쭉 들어가겠죠?
그리고난 뒤부터 findViewById로 R.id로 접근이 가능합니다ㅎㅎ
순서는 기본적이지만 반드시지켜야되죠ㅎ
setContentView는 Layout이나 View도 받을수있습니다.
그때는 id값으로 받는게아니라 Layout이나 View를 직접 생성해서 넣는거라 위치가 어디에오든 상관없구요.
setContentView 하기전에 findViewById 하셔서 나는 오류입니다.
setContentView를 첫줄로 옮기시고 R.layout.xml 파일명 으로 하세요.