public class MultiMemoActivity extends Activity {
public static final String TAG = "MultiMemoActivity";
ListView mMemoListView;
MemoListAdapter mMemoListAdapter;
int mMemoCount = 0;
public static MemoDatabase mDatabase = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.multimemo);
mMemoListView = (ListView)findViewById(R.id.memoList);
mMemoListAdapter = new MemoListAdapter(this);
mMemoListView.setAdapter(mMemoListAdapter);
mMemoListView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
viewMemo(position);
}
});
TitleBitmapButton newMemoBtn = (TitleBitmapButton)findViewById(R.id.newMemoBtn);
newMemoBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Log.d(TAG, "newMemoBtn clicked.");
Intent intent = new Intent(getApplicationContext(), MemoInsertActivity.class);
intent.putExtra(BasicInfo.KEY_MEMO_MODE, BasicInfo.MODE_INSERT);
startActivityForResult(intent, BasicInfo.REQ_INSERT_ACTIVITY);
}
});
TitleBitmapButton closeBtn = (TitleBitmapButton)findViewById(R.id.closeBtn);
closeBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
protected void onStart() {
openDatabase();
loadMemoListData();
super.onStart();
}
public void openDatabase() {
if (mDatabase != null) {
mDatabase.close();
mDatabase = null;
}
mDatabase = MemoDatabase.getInstance(this);
boolean isOpen = mDatabase.open();
if (isOpen) {
Log.d(TAG, "Memo database is open.");
} else {
Log.d(TAG, "Memo database is not open.");
}
}
public int loadMemoListData() {
String SQL = "select _id, INPUT_DATE, CONTENT_TEXT, ID_PHOTO, ID_VIDEO, ID_VOICE, ID_HANDWRITING from MEMO order by INPUT_DATE desc";
int recordCount = -1;
if (MultiMemoActivity.mDatabase != null) {
Cursor outCursor = MultiMemoActivity.mDatabase.rawQuery(SQL);
recordCount = outCursor.getCount();
Log.d(TAG, "cursor count : " + recordCount + "\n");
mMemoListAdapter.clear();
for (int i = 0; i < recordCount; i++) {
outCursor.moveToNext();
String memoId = outCursor.getString(0);
String dateStr = outCursor.getString(1);
if (dateStr != null && dateStr.length() > 10) {
//dateStr = dateStr.substring(0, 10);
try {
Date inDate = BasicInfo.dateFormat.parse(dateStr);
dateStr = BasicInfo.dateNameFormat2.format(inDate);
} catch(Exception ex) {
ex.printStackTrace();
}
} else {
dateStr = "";
}
String memoStr = outCursor.getString(2);
String photoId = outCursor.getString(3);
String photoUriStr = getPhotoUriStr(photoId);
String videoId = outCursor.getString(4);
String videoUriStr = null;
String voiceId = outCursor.getString(5);
String voiceUriStr = null;
String handwritingId = outCursor.getString(6);
String handwritingUriStr = null;
handwritingUriStr = getHandwritingUriStr(handwritingId);
videoUriStr = getVideoUriStr(videoId);
voiceUriStr = getVoiceUriStr(voiceId);
mMemoListAdapter.addItem(new MemoListItem(memoId, dateStr, memoStr, handwritingId, handwritingUriStr, photoId, photoUriStr, videoId, videoUriStr, voiceId, voiceUriStr));
}
outCursor.close();
mMemoListAdapter.notifyDataSetChanged();
}
return recordCount;
}
public String getPhotoUriStr(String id_photo) {
String photoUriStr = null;
if (id_photo != null && !id_photo.equals("-1")) {
String SQL = "select URI from " + MemoDatabase.TABLE_PHOTO + " where _ID = " + id_photo + "";
Cursor photoCursor = MultiMemoActivity.mDatabase.rawQuery(SQL);
if (photoCursor.moveToNext()) {
photoUriStr = photoCursor.getString(0);
}
photoCursor.close();
} else if(id_photo == null || id_photo.equals("-1")) {
photoUriStr = "";
}
return photoUriStr;
}
/**
* 손글씨 데이터 URI 가져오기
*/
public String getHandwritingUriStr(String id_handwriting) {
Log.d(TAG, "Handwriting ID : " + id_handwriting);
String handwritingUriStr = null;
if (id_handwriting != null && id_handwriting.trim().length() > 0 && !id_handwriting.equals("-1")) {
String SQL = "select URI from " + MemoDatabase.TABLE_HANDWRITING + " where _ID = " + id_handwriting + "";
Cursor handwritingCursor = MultiMemoActivity.mDatabase.rawQuery(SQL);
if (handwritingCursor.moveToNext()) {
handwritingUriStr = handwritingCursor.getString(0);
}
handwritingCursor.close();
} else {
handwritingUriStr = "";
}
return handwritingUriStr;
}
/**
* 동영상 데이터 URI 가져오기
*/
public String getVideoUriStr(String id_video) {
Log.d(TAG, "Video ID : " + id_video);
String videoUriStr = null;
if (id_video != null && id_video.trim().length() > 0 && !id_video.equals("-1")) {
String SQL = "select URI from " + MemoDatabase.TABLE_VIDEO + " where _ID = " + id_video + "";
Cursor videoCursor = MultiMemoActivity.mDatabase.rawQuery(SQL);
if (videoCursor.moveToNext()) {
videoUriStr = videoCursor.getString(0);
}
videoCursor.close();
} else {
videoUriStr = "";
}
return videoUriStr;
}
/**
* 녹음 데이터 URI 가져오기
*/
public String getVoiceUriStr(String id_voice) {
Log.d(TAG, "Voice ID : " + id_voice);
String voiceUriStr = null;
if (id_voice != null && id_voice.trim().length() > 0 && !id_voice.equals("-1")) {
String SQL = "select URI from " + MemoDatabase.TABLE_VOICE + " where _ID = " + id_voice + "";
Cursor voiceCursor = MultiMemoActivity.mDatabase.rawQuery(SQL);
if (voiceCursor.moveToNext()) {
voiceUriStr = voiceCursor.getString(0);
}
voiceCursor.close();
} else {
voiceUriStr = "";
}
return voiceUriStr;
}
private void viewMemo(int position) {
MemoListItem item = (MemoListItem)mMemoListAdapter.getItem(position);
// 메모 보기 액티비티 띄우기
Intent intent = new Intent(getApplicationContext(), MemoInsertActivity.class);
intent.putExtra(BasicInfo.KEY_MEMO_MODE, BasicInfo.MODE_VIEW);
intent.putExtra(BasicInfo.KEY_MEMO_ID, item.getId());
intent.putExtra(BasicInfo.KEY_MEMO_DATE, item.getData(0));
intent.putExtra(BasicInfo.KEY_MEMO_TEXT, item.getData(1));
intent.putExtra(BasicInfo.KEY_ID_HANDWRITING, item.getData(2));
intent.putExtra(BasicInfo.KEY_URI_HANDWRITING, item.getData(3));
intent.putExtra(BasicInfo.KEY_ID_PHOTO, item.getData(4));
intent.putExtra(BasicInfo.KEY_URI_PHOTO, item.getData(5));
intent.putExtra(BasicInfo.KEY_ID_VIDEO, item.getData(6));
intent.putExtra(BasicInfo.KEY_URI_VIDEO, item.getData(7));
intent.putExtra(BasicInfo.KEY_ID_VOICE, item.getData(8));
intent.putExtra(BasicInfo.KEY_URI_VOICE, item.getData(9));
startActivityForResult(intent, BasicInfo.REQ_VIEW_ACTIVITY);
}
/**
* 다른 액티비티의 응답 처리
*/
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case BasicInfo.REQ_INSERT_ACTIVITY:
if(resultCode == RESULT_OK) {
loadMemoListData();
}
break;
case BasicInfo.REQ_VIEW_ACTIVITY:
loadMemoListData();
break;
}
}
}
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.androidtown.multimemo.stage04/kr.ac.daelim.cs.toolbox.multimemo.MultiMemoActivity}: java.lang.IllegalArgumentException: File MultimediaMemo/memo.db contains a path separator
이 소스에서 경로 구분자를 포함 한다는데.. 어디서 포함을 해서 오류가 뜨는지 모르겟서 질문을 올립니다.
초보 개발자인데.. 아직 소스 분석 하는것이 허술 해서 이렇게 질문을 드림니다..