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

findViewById메소드에 관하여 질문드립니다.

0 추천

기기의 해상도에 맞게 레이아웃을 조정하려고

setLayoutParams 을 써서 아래 코드로 레이아웃의 위치와 크기를 조정중인데

LinearLayout Toplayout = (LinearLayout)this.findViewById(R.id.Toplayout);

LinearLayout.LayoutParams topparam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int)(DeviceHeight*0.040625));

Toplayout.setLayoutParams(topparam);

실기기로 했을때는 정상 동작하나 에뮬레이터로 동작시 프로그램이 종료가 됩니다.

혹시 null포인터 에러가 아닌가 싶어서 setContentView 이후에 호출하는지도 확인했습니다.

그런데 역시 NULL포인터 에러네요 ...

무슨차이가 있기에 실기기와 에뮬레이터의 차이가 났을까요?

실기기는 갤럭시노트2이며 에뮬레이터는 넥서스S를 기준으로 하고 있습니다

Pike (260 포인트) 님이 2013년 3월 30일 질문
Pike님이 2013년 3월 30일 수정
LinearLayout.LayoutParams topparam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int)(DeviceHeight*0.040625));
Toplayout.setLayoutParams(topparam);
이부분 일단 빼보고해보고 해보세요...
해당 부분을 빼면 물론 돌아갑니다.
findViewById에서 null을 리턴해서 생기는 문제니까요

1개의 답변

0 추천
layoutparams를 setcontentView 보다 먼저 작성해 보세요.
갈무리 (12,430 포인트) 님이 2013년 4월 1일 답변
setcontentView와 관계가 없었습니다. 제가 layout을 여러개를 가지고 있는데 실수로 layout중에 id추가하는걸 빼먹은게 있었습니다. 그래서 null을 리턴했던 거고요. 결국에는 저의 실수 ㅠ
...