2011-09-11 5 views
0

아래에서이 코딩과 관련하여 오류가 발생합니다. 나는 주변을 돌아 다니는 것이 엉망이라고 알고 있습니다. 어떤 이유로 나는 Null Pointer Exception을 얻고있다.Android Null 포인터 예외 MySimpleTreeAdapter

MySimpleCursorTreeAdapter mscta = new MySimpleCursorTreeAdapter(

코드 :

protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.cattest); 

      SQLiteDatabase checkDB = null; 
      String myPath = DB_PATH + DB_NAME; 
      checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 
      //froggydb = dbHelper.getReadableDatabase(); 


      Cursor groupCursor = checkDB.rawQuery("SELECT * FROM questions", null); 
      MySimpleCursorTreeAdapter mscta = new MySimpleCursorTreeAdapter(
                this, 
                groupCursor, 
                R.layout.employee_list_item, 
                new String[] {"question"}, 
                new int[] {R.id.firstName}, 
                R.layout.employee_list_item, 
                new String[] {"question"}, 
                new int[] {R.id.firstName}); 
      setListAdapter(mscta); 
      checkDB.close(); 
    } 

    class MySimpleCursorTreeAdapter extends SimpleCursorTreeAdapter{ 

      public MySimpleCursorTreeAdapter(Context context, Cursor cursor, 
          int groupLayout, String[] groupFrom, int[] groupTo, 
          int childLayout, String[] childFrom, int[] childTo) { 
        super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom, 
            childTo); 
      } 


      @Override 
      protected Cursor getChildrenCursor(Cursor groupCursor) { 
        String countryID = Integer.toString(groupCursor.getInt(0)); 
        SQLiteDatabase checkDB = null; 
        String myPath = DB_PATH + DB_NAME; 
        checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 

        Cursor value = checkDB.rawQuery("SELECT * FROM questions", null); 

        String test = ""; 
        if(value.moveToFirst()) 
          test = value.getInt(0) + ": " + value.getString(1); 
        while(value.moveToNext()){ 
          test += ";" + value.getInt(0) + ": " + value.getString(1); 
        } 
        return value; 
      } 
    } 

스택 트레이스 : 예외가 정말 라인에서 발생하는 경우

09-11 14:33:09.365: ERROR/AndroidRuntime(161): Uncaught handler: thread main exiting due to uncaught exception 
09-11 14:33:10.565: ERROR/AndroidRuntime(161): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.home.max/com.browse.max.Categories}: java.lang.NullPointerException 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.ActivityThread.startActivityNow(ActivityThread.java:2242) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:631) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.widget.TabHost.setCurrentTab(TabHost.java:317) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:127) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:346) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.View.performClick(View.java:2344) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.View.onTouchEvent(View.java:4133) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.View.dispatchTouchEvent(View.java:3672) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:850) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:882) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1712) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1202) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.Activity.dispatchTouchEvent(Activity.java:1987) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1696) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1658) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.os.Looper.loop(Looper.java:123) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.ActivityThread.main(ActivityThread.java:4203) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at java.lang.reflect.Method.invoke(Method.java:521) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at dalvik.system.NativeStart.main(Native Method) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161): Caused by: java.lang.NullPointerException 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.browse.max.Categories$MySimpleCursorTreeAdapter.getChildrenCursor(Categories.java:69) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.widget.CursorTreeAdapter.getChildrenCursorHelper(CursorTreeAdapter.java:106) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.widget.SimpleCursorTreeAdapter.init(SimpleCursorTreeAdapter.java:172) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.widget.SimpleCursorTreeAdapter.<init>(SimpleCursorTreeAdapter.java:157) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.browse.max.Categories$MySimpleCursorTreeAdapter.<init>(Categories.java:62) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at com.browse.max.Categories.onCreate(Categories.java:44) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364) 
09-11 14:33:10.565: ERROR/AndroidRuntime(161):  ... 29 more 
+3

예외가 발생한 행을 stacktrace에 게시하고 예외가 발생했음을 지적하십시오. –

+0

'NullPointers'는 쉽게 추적 할 수 있습니다. 나는 왜 그들에 관해 많은 질문이 있는지 모르겠다. ... –

+0

NPE는 어디에 있는가? – st0le

답변

0

당신이 표시된 스택 트레이스 포인트는이 라인 인 44 라인에 그 원인은 R.idnull이라는 것입니다.

다른 가능성은 Rnull 또는 R.layout이 null입니다. 그러나 그 중 하나가 사실이라면 NPE는 다음과 같이 던져 질 것입니다 :

setContentView(R.layout.cattest); 
관련 문제