button을 누르면 다른 activity가 나오게 되고 그것을 저장을 하면 다른 activity에서 DB에 저장한 title 값을 listview에 나오게 됩니다.

그리고 listview의 row를 누르면 저장을 했던 activity가 result 하게 됩니다. 그런데 row를 누르면 애러가 뜨면서 강제 종료가 되고 있습니다.

result 값이 문제인지 아니면 onItemClick 쪽이 문제인지... 아무리 생각을 하고 찾아보고 해도 답이 안나오네요...

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ TodayActivity.class  ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

public class TodayActivity extends Activity implements OnItemClickListener,OnClickListener { // 오늘의 일정 목록 띄우기

   MyDBHelper mDBHelper;

   String today;

   Cursor cursor;

   SimpleCursorAdapter adapter;

   ListView list;

 

/** Called when the activity is first created. */

   @Override
   public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);
       setContentView(R.layout.today);

       Intent intent = getIntent();
       today = intent.getStringExtra("Param1");

 

       TextView title_text = (TextView) findViewById(R.id.texttoday);
       title_text.setText(today);

       mDBHelper = new MyDBHelper(this);
       mDBHelper.open();
  
       cursor = mDBHelper.onSelectDate(today);

       adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, cursor,
                       new String[] { "title" }, new int[] { android.R.id.text1, });

       ListView list = (ListView) findViewById(R.id.list1);
       list.setAdapter(adapter);
       list.setOnItemClickListener(this);

 

       mDBHelper.close();

 

       Button btn = (Button) findViewById(R.id.btnadd);
       btn.setOnClickListener(this);

     }

 

 //list에서 row를 눌렀을 때 생기는 액션
 public void onItemClick(AdapterView<?> parent, View view, int position,long id) {

  // TODO Auto-generated method stub

  Intent intent = new Intent(this, ScheduleActivity.class);
  cursor.moveToPosition(position);
  intent.putExtra("ParamID", cursor.getInt(0));
  startActivityForResult(intent, 0);

 }

 

    //'+' 버튼을 눌렀을 때 생기는 액션
    public void onClick(View v) {

    // TODO Auto-generated method stub

       Intent intent = new Intent(this, ScheduleActivity.class);
       intent.putExtra("ParamDate", today);
       startActivityForResult(intent, 1);

    }

 

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

       // TODO Auto-generated method stub

       switch (requestCode) {

          case 0:

          case 1:

            if (resultCode == RESULT_OK) {

                mDBHelper.open();
    
               cursor = mDBHelper.onSelectDate(today);
               adapter.changeCursor(cursor);

               mDBHelper.close();

           }

        break;

       }

    }

}

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ MyDBHelper.class ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

public class MyDBHelper {

    private static final String DATABASE_NAME = "Today.db"; // DB 이름
    private static final String DATABASE_TABLE = "today"; // DB 테이블 이름
    private static final int DATABASE_VERSION = 1; // DB 버전

 

    public static final String KEY_TITLE = "title";
    public static final String KEY_POINT = "point";
    public static final String KEY_DATE = "date";
    public static final String KEY_START_TIME = "startTime";
    public static final String KEY_END_TIME = "endTime";
    public static final String KEY_MEMO = "memo";
    public static final String KEY_MESSAGE = "m_message";

 

    public static final String KEY_ROWID = "_id";

 

    public static final int FIND_BY_TITLE = 1;
    public static final int FIND_BY_POINT = 2;
    public static final int FIND_BY_DATE = 3;
    public static final int FIND_BY_MEMO = 4;
    public static final int FIND_BY_START_TIME = 5;
    public static final int FIND_BY_END_TIME = 6;
    public static final int FIND_BY_MESSAGE = 7;

 

    private final Context mCtx;

    private DatabaseHelper mDbHelper;
    private static final String TAG = "DateDB";
    private SQLiteDatabase db; 


         // 새로운 테이블을 만드는 sql문
    private static final String DATABASE_CREATE = "CREATE TABLE today(_id INTEGER PRIMARY KEY       

          AUTOINCREMENT, "+ "title TEXT, "+ "point TEXT, "+ "date TEXT, "+ "memo TEXT, "
          + "startTime TEXT, " + "endTime TEXT, " + "m_message TEXT);";

 

    private class DatabaseHelper extends SQLiteOpenHelper {

       public DatabaseHelper(Context context) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
         // TODO Auto-generated constructor stub
       }

 

       @Override
       // 새로운 데이터 테이블을 만듦
       public void onCreate(SQLiteDatabase db) {
          db.execSQL(DATABASE_CREATE);
       }

 

       @Override
       public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          Log.w(TAG, "Upgrading db from version" + oldVersion + " to"
             + newVersion + ", which will destroy all old data");


          db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE); // old 테이블은 버림
          onCreate(db); // 새로운 테이블을 만듦
       }

    }

 

    public MyDBHelper(Context ctx) {
       this.mCtx = ctx;
    }

 

    public MyDBHelper open() throws SQLException {
       mDbHelper = new DatabaseHelper(mCtx);
       db = mDbHelper.getWritableDatabase();


       return this;
    }

 

    public void close() {
       mDbHelper.close();
    }

 

    public long onInsert(String title, String point, String date, String memo,

      String startTime, String endTime, String m_message) { // 레코드 생성


        ContentValues initialValues = new ContentValues();


         initialValues.put(KEY_TITLE, title);
         initialValues.put(KEY_POINT, point);
         initialValues.put(KEY_DATE, date);
         initialValues.put(KEY_START_TIME, startTime);
         initialValues.put(KEY_END_TIME, endTime);
         initialValues.put(KEY_MEMO, memo);
         initialValues.put(KEY_MESSAGE, m_message);

 

         return db.insert(DATABASE_TABLE, null, initialValues);

    }

 

    public boolean onDelete(long rowID) { // 레코드 삭제

       return db.delete(DATABASE_TABLE, KEY_ROWID + "=" + rowID, null) > 0;

    }

 

    public Cursor onSelectAll() { // 모든 레코드 반환

       return db.query(DATABASE_TABLE, new String[] { KEY_ROWID, KEY_TITLE,
        KEY_POINT, KEY_DATE, KEY_MEMO, KEY_START_TIME, KEY_END_TIME,
        KEY_MESSAGE }, null, null, null, null, null, null);

    }

 

    public Cursor onSelect(long rowID) throws SQLException { // 특정 레코드 반환

       Cursor mCursor = db.query(true, DATABASE_TABLE,
        new String[] { KEY_TITLE, KEY_POINT, KEY_DATE, KEY_START_TIME,
        KEY_END_TIME, KEY_MEMO, KEY_MESSAGE }, KEY_ROWID + "="
        + rowID, null, null, null, null, null);

 

       if (mCursor != null) {

         mCursor.moveToFirst();
       }


       return mCursor;

    }

 

    public Cursor onSelectDate(String date) throws SQLException {
       Cursor cursor = db.query(true, DATABASE_TABLE, null, KEY_DATE + "=?",
         new String[] { date }, null, null, null, null); 

 

       if (cursor != null) {

         cursor.moveToFirst();
       }


       return cursor;
    }

 

    public boolean onUpdate(long rowID, String title, String point,
     String date, String memo, String startTime, String endTime, String m_message) { // 레코드 수정

       ContentValues args = new ContentValues();

       args.put(KEY_TITLE, title);
       args.put(KEY_POINT, point);
       args.put(KEY_DATE, date);
       args.put(KEY_MEMO, memo);
       args.put(KEY_START_TIME, startTime);
       args.put(KEY_END_TIME, endTime);
       args.put(KEY_MESSAGE, m_message);

 

       return db.update(DATABASE_TABLE, args, KEY_ROWID + "=" + rowID, null) > 0;

    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ LogCat errorㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

11-08 12:54:32.554: E/AndroidRuntime(1462): FATAL EXCEPTION: main
11-08 12:54:32.554: E/AndroidRuntime(1462): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.calednar/com.android.calednar.ScheduleActivity}: java.lang.NullPointerException
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.os.Handler.dispatchMessage(Handler.java:99)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.os.Looper.loop(Looper.java:137)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.ActivityThread.main(ActivityThread.java:4424)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at java.lang.reflect.Method.invokeNative(Native Method)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at java.lang.reflect.Method.invoke(Method.java:511)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at dalvik.system.NativeStart.main(Native Method)
11-08 12:54:32.554: E/AndroidRuntime(1462): Caused by: java.lang.NullPointerException
11-08 12:54:32.554: E/AndroidRuntime(1462):  at com.android.calednar.ScheduleActivity.updateArray(ScheduleActivity.java:105)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at com.android.calednar.ScheduleActivity.dbList(ScheduleActivity.java:95)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at com.android.calednar.ScheduleActivity.onCreate(ScheduleActivity.java:67)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.Activity.performCreate(Activity.java:4465)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
11-08 12:54:32.554: E/AndroidRuntime(1462):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
11-08 12:54:32.554: E/AndroidRuntime(1462):  ... 11 more

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ