어플을 만들면서 여러가지 레이아웃을 중첩으로 사용하고 있는데요..
Relative 안에 -> Frame 안에 -> Linear -> Relative -> 또 Frame 이런식으로요
메뉴와 각 해당 페이지의 버튼에 따라서 각각 다른 영역의 화면을 변화시켜줘야 되어서 위처럼 구성을 했습니다
처음 구성을 했을때는 잘 돌아갔었는데..
작은 화면의 폰에서(옵티머스 원) 아이콘들 크기가 서로 겹쳐지는 현상이 있어서 최대한 상대적인 비율로 조정을 했습니다
그런데... 첫 화면은 잘 뜨는데요.. 버튼을 눌러서 다른 화면으로 전환시키려고 하면 오류가 생겼다면서 강제로 종료되어 버립니다 ㅡㅜ
평소에 로그캣 화면에 몇번줄 에러라고 친절하게 띄워주는 것을 보고 수정을 했었는데
이번에는 무슨View 무슨Layout 어쩌고 에러메세지만 뜹니다
벌써 몇시간째 이것만 봐도 도저히 답이 안나와서 질문 드립니다..
분석 좀 부탁드리겠습니다 ㅡㅜ
12-08 04:14:24.710: ERROR/AndroidRuntime(380): FATAL EXCEPTION: main 12-08 04:14:24.710: ERROR/AndroidRuntime(380): java.lang.NullPointerException 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.ListView.measureScrapChild(ListView.java:1117) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.ListView.measureHeightOfChildren(ListView.java:1200) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.ListView.onMeasure(ListView.java:1109) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:696) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.onMeasure(LinearLayout.java:306) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:696) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.onMeasure(LinearLayout.java:306) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureHorizontal(LinearLayout.java:696) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.onMeasure(LinearLayout.java:306) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:578) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:362) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.View.measure(View.java:8171) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewRoot.performTraversals(ViewRoot.java:801) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.os.Handler.dispatchMessage(Handler.java:99) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.os.Looper.loop(Looper.java:123) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at android.app.ActivityThread.main(ActivityThread.java:4627) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at java.lang.reflect.Method.invokeNative(Native Method) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at java.lang.reflect.Method.invoke(Method.java:521) 12-08 04:14:24.710: ERROR/AndroidRuntime(380): at com.android.internal.os.ZygoteInit$MethodAndArgsCa
NullPointerException이 시작되는 ListView의 measureScrapChild메서드입니다.
줄번호가 제가 갖고있는 풀소스와 달라서 정확하게 어느 부분인지는 모르겠습니다.
child가 null이거나 mAdapter가 null일 수 있겠네요..
차근차근 보세요....
private void measureScrapChild(View child, int position, int widthMeasureSpec) {
LayoutParams p = (LayoutParams) child.getLayoutParams();
if (p == null) {
p = new LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT, 0);
child.setLayoutParams(p);
}
p.viewType = mAdapter.getItemViewType(position);
int childWidthSpec = ViewGroup.getChildMeasureSpec(widthMeasureSpec,
mListPadding.left + mListPadding.right, p.width);
int lpHeight = p.height;
int childHeightSpec;
if (lpHeight > 0) {
childHeightSpec = MeasureSpec.makeMeasureSpec(lpHeight, MeasureSpec.EXACTLY);
} else {
childHeightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
}
child.measure(childWidthSpec, childHeightSpec);
}
변수선언시 = null;인것들을 중점으로 테스트해보세요