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>