ListActivity 상에서 TextView와 CheckBox를 만들고 DB에서 값을 받아서 리스트를 그려준 상태에서 각 리스트의 앞에 checkbox를 두어 check 시 상태를 변경하려고 하는데 CheckBox를 선언하여 사용시 ChceckBox로 접근하면 Sorry pop up이 발생합니다.

null pointer exception 으로 죽게되는데 왜 항상 널 값을 가지는지 이해가 안되네요.

고수님들에 의견 듣고 싶습니다. 시작한지 얼마 되지 않아 모르는 부분이 많네요.

 

ver.2.3.3 이며 공지 사항 다 읽어 보았습니다.

 

10-18 01:33:22.755: ERROR/AndroidRuntime(393): FATAL EXCEPTION: main
10-18 01:33:22.755: ERROR/AndroidRuntime(393): java.lang.RuntimeException: Unable to start activity ComponentInfo{kr.co.refrigeratormanager/kr.co.refrigeratormanager.CartTabActivity}: java.lang.NullPointerException
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1487)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.widget.TabHost.setCurrentTab(TabHost.java:326)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.view.View.performClick(View.java:2485)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.view.View$PerformClick.run(View.java:9080)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.os.Handler.handleCallback(Handler.java:587)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.os.Looper.loop(Looper.java:123)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.app.ActivityThread.main(ActivityThread.java:3683)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at java.lang.reflect.Method.invokeNative(Native Method)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at java.lang.reflect.Method.invoke(Method.java:507)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at dalvik.system.NativeStart.main(Native Method)
10-18 01:33:22.755: ERROR/AndroidRuntime(393): Caused by: java.lang.NullPointerException
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at kr.co.refrigeratormanager.CartTabActivity.onCreate(CartTabActivity.java:47)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-18 01:33:22.755: ERROR/AndroidRuntime(393):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

 

 

 java code

public class CartTabActivity extends ListActivity implements OnCheckedChangeListener{
 private static final String Q_GET_LIST = "SELECT * FROM cart_table ORDER BY _id DESC";
 static final int DIG_DELETE = 0;
 CheckBox checkbox;
 TextView checkbox_text;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  getCartDbData();
 
  checkbox = (CheckBox)findViewById(R.id.checkBox1);
        
//  if(checkbox != null)
//        {
//   Toast toast = Toast.makeText(CartTabActivity.this, "null", Toast.LENGTH_LONG);   
//   toast.show();
         checkbox.setOnCheckedChangeListener(this);
//        }
  
 }


 private void getCartDbData() {
  // TODO Auto-generated method stub
  SQLiteDatabase db = null;
  if(db == null)
  {
   db = openOrCreateDatabase("cart_table.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
  }
    
  Cursor c = db.rawQuery(Q_GET_LIST, null);
  startManagingCursor(c);
  
  ListAdapter adapter = new SimpleCursorAdapter(
    this, 
    R.layout.carttab,
    c, 
    new String[] {"item_name", "item_num"}, 
    new int[] {R.id.cart_item, R.id.cart_itemnum});
 
  setListAdapter(adapter);
 
 }

layout


<RelativeLayout 
    android:id="@+id/relativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" >
        <CheckBox 
        android:layout_height="wrap_content" 
        android:id="@+id/checkBox1" 
        android:text="구매함" 
        android:layout_width="wrap_content" 
        android:layout_centerVertical="true" 
        android:layout_alignParentLeft="true">
        </CheckBox>
        <TextView 
        android:layout_height="wrap_content" 
        android:text="구매목록" 
        android:layout_width="wrap_content" 
        android:id="@+id/cart_item" 
        android:layout_centerVertical="true" 
        android:layout_toRightOf="@+id/checkBox1" 
        android:layout_marginLeft="10dp">
        </TextView>
        <TextView 
        android:layout_height="wrap_content" 
        android:text="갯수" 
        android:layout_width="wrap_content" 
        android:id="@+id/cart_itemnum" 
        android:layout_alignBaseline="@+id/checkBox1" 
        android:layout_alignBottom="@+id/checkBox1" 
        android:layout_toLeftOf="@+id/textView2">
        </TextView>
        <TextView 
        android:layout_height="wrap_content" 
        android:text=" 개" 
        android:layout_width="wrap_content" 
        android:id="@+id/textView2" 
        android:layout_alignBaseline="@+id/cart_itemnum" 
        android:layout_alignBottom="@+id/cart_itemnum" 
        android:layout_alignParentRight="true">
        </TextView>
    </RelativeLayout>