안녕하세요.
자바소스로 UI를 짜고있는데요,
스크롤뷰가 자식 뷰를 하나만 가질 수 있어서
항상 스크롤뷰와 레이아웃을 하나 더 따로 만들어야 하는게 불편해서
자바소스로 커스텀 클래스를 만들었습니다.
구조는 ScrollView 안에 LinearLayout 객체 변수를 가지고 있고,
LinearLayout에 직접 addVIew 시키도록 메서드를 추가 해서
이 클래스의 객체를 만들어 사용하려고 했더니 NullPointerException 이 나오는데요,
계속 보고 있는데 문제점을 못찾겠네요 ㅠㅠ
제가 뭘 잘못해서 그런것인지, 원래 안되는것인지 조언 구합니다.
public class CustomScrollView extends ScrollView { private LinearLayout mContainer; public CustomScrollView(final Context context) { super(context); setOverScrollMode(OVER_SCROLL_NEVER); setFadingEdgeLength(0); mContainer = new LinearLayout(context); mContainer.setOrientation(LinearLayout.VERTICAL); ViewGroup.LayoutParams p = new ViewGroup.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); mContainer.setLayoutParams(p); addView(mContainer); } public void add(final View child){ mContainer.addView(child); }
소스를 이렇게 해 두고, add 메서드를 호출했습니다.
그러니 NullPointerException 이 떨어졌습니다.
로그도 첨부합니다.
도와주세요!! ㅜㅜ
11-28 15:07:15.300: E/AndroidRuntime(8246): FATAL EXCEPTION: main
11-28 15:07:15.300: E/AndroidRuntime(8246): java.lang.NullPointerException
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5151)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.ViewGroup.resetResolvedTextDirection(ViewGroup.java:5152)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.View.resolveLayoutDirectionIfNeeded(View.java:9736)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.View.onAttachedToWindow(View.java:9714)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.View.dispatchAttachedToWindow(View.java:9958)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:2198)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.ViewGroup.addViewInner(ViewGroup.java:3376)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.ViewGroup.addView(ViewGroup.java:3208)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.ViewGroup.addView(ViewGroup.java:3165)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.view.ViewGroup.addView(ViewGroup.java:3145)
11-28 15:07:15.300: E/AndroidRuntime(8246): at ir.example.main.MainActivity$1.handleMessage(MainActivity.java:112)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.os.Handler.dispatchMessage(Handler.java:99)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.os.Looper.loop(Looper.java:137)
11-28 15:07:15.300: E/AndroidRuntime(8246): at android.app.ActivityThread.main(ActivityThread.java:4507)
11-28 15:07:15.300: E/AndroidRuntime(8246): at java.lang.reflect.Method.invokeNative(Native Method)
11-28 15:07:15.300: E/AndroidRuntime(8246): at java.lang.reflect.Method.invoke(Method.java:511)
11-28 15:07:15.300: E/AndroidRuntime(8246): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
11-28 15:07:15.300: E/AndroidRuntime(8246): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
11-28 15:07:15.300: E/AndroidRuntime(8246): at dalvik.system.NativeStart.main(Native Method)
(MainActivity.java:112 로그에서 가리키는 여기 112 라인은
제가 만든 CustomScrollView 를 사용하는 클래스의 생성자입니다....ㅜㅜ
그것만으로는 찾을수가 없더라구요...
11-28 15:07:15.300: E/AndroidRuntime(8246): at ir.example.main.MainActivity$1.handleMessage(MainActivity.java:112)
이걸보면 핸들 메세지에서 오류가 난 것 같은데
오류난 부분의 소스가 없네요
로그캣에서 저 줄을 더블클릭하면 오류난 곳의 소스로 이동됩니다.
그부분을 보여주세요