마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

RuntimeException에서 IllegalArgumentException 오류 질문입니다

0 추천

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

 

이 소스에서 경로 구분자를 포함 한다는데.. 어디서 포함을 해서 오류가 뜨는지 모르겟서 질문을 올립니다.

초보 개발자인데.. 아직 소스 분석 하는것이 허술 해서 이렇게 질문을 드림니다..

안플로이드 (120 포인트) 님이 2013년 5월 7일 질문
안플로이드님이 2013년 5월 7일 태그 변경

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...