public class Schedule extends Activity{ private DbAdapter mDbHelper; Cursor mCursor; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.schedule); mDbHelper = new DbAdapter(this); mDbHelper.open(); mDbHelper.insertRow("today", 1897); long rowid = mDbHelper.insertRow("today", 45675); Toast.makeText(getApplicationContext(), "ok" , Toast.LENGTH_LONG ).show(); //확인용 /* mCursor = mDbHelper.fetchAllRows(); startManagingCursor(mCursor); SimpleCursorAdapter adapter = new SimpleCursorAdapter( this, R.layout.schedule, mCursor, new String[] { "Day","Cal"}, new int[] { R.id.text1, R.id.text2 } ); setListAdapter(adapter); if (mDbHelper != null) mDbHelper.close(); */ }
위의 코드와 같이 Activity를 상속받아서 fetchallrows부분을 주석처리해주면 app구동에 문제가 없습니다.
하지만 db의 내용을 listadapter에 받아와서 list로 뿌려줄려고 하는데
여기서 listactivity를 상속받아서 저 주석문을 풀고 실행을 하면 어플이 죽어버립니다.
ui 구성은 탭호스트를 이용하였고 그 탭을 클릭시에 schedule class가 실행됩니다.
06-09 05:36:03.575: W/dalvikvm(3477): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-09 05:36:03.585: E/AndroidRuntime(3477): FATAL EXCEPTION: main
06-09 05:36:03.585: E/AndroidRuntime(3477): java.lang.RuntimeException: Unable to start activity ComponentInfo{kr.ac.kmu.android.stepcounter/kr.ac.kmu.android.stepcounter.Schedule}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1487)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.widget.TabHost.setCurrentTab(TabHost.java:326)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.view.View.performClick(View.java:2485)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.view.View$PerformClick.run(View.java:9080)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.os.Handler.handleCallback(Handler.java:587)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.os.Handler.dispatchMessage(Handler.java:92)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.os.Looper.loop(Looper.java:123)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.ActivityThread.main(ActivityThread.java:3683)
06-09 05:36:03.585: E/AndroidRuntime(3477): at java.lang.reflect.Method.invokeNative(Native Method)
06-09 05:36:03.585: E/AndroidRuntime(3477): at java.lang.reflect.Method.invoke(Method.java:507)
06-09 05:36:03.585: E/AndroidRuntime(3477): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-09 05:36:03.585: E/AndroidRuntime(3477): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-09 05:36:03.585: E/AndroidRuntime(3477): at dalvik.system.NativeStart.main(Native Method)
06-09 05:36:03.585: E/AndroidRuntime(3477): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.ListActivity.onContentChanged(ListActivity.java:243)
06-09 05:36:03.585: E/AndroidRuntime(3477): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:210)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.Activity.setContentView(Activity.java:1657)
06-09 05:36:03.585: E/AndroidRuntime(3477): at kr.ac.kmu.android.stepcounter.Schedule.onCreate(Schedule.java:22)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-09 05:36:03.585: E/AndroidRuntime(3477): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
06-09 05:36:03.585: E/AndroidRuntime(3477): ... 18 more
06-09 05:36:05.455: I/Process(3477): Sending signal. PID: 3477 SIG: 9
listactivity를 상속하신거면 xml에 정의한 리스트의 id 값을
<ListView
android:id="@+id/android:list"
...................
이렇게 해보세요.