'파일오픈'에 해당되는 글 1건

  1. 2009.12.30 Day 3 : 간단한 메모장 만들기 (이어서) 4
Android2009. 12. 30. 16:13

Day2에서 구현 못한 파일 오픈과 관련된 기능을 추가.


구현 내용

  1. 메뉴 구성 : day 2
    - 타이틀 제목/New/Open/Exit 로 구성
  2. New 버튼 : day 2
    - 메모입력창을 띄운다.
    - 텍스트입력창 (상단) : 메모의 내용을 입력받는다.
    - 텍스트입력창 (하단) : 한줄로 메모의 내용을 저장시킬 파일 이름을 입력 받는다.
    - 버튼 (SAVE) : 바로 저장해 버린다.
    - 버튼 (MENU) : 초기 메뉴로 나가버린다.
  3. Open 버튼 : day 3
    - 저장되어 있는 파일들을 보여준다.
    - 사용자가 파일을 선택하면 스크롤 뷰 레이아웃을 이용해 내용을 보여주기만 한다.
    - 버튼 (EDIT) : 읽고있는 내용을 메모입력창으로 보내 사용자가 편집할 수 있게 한다.
    - 버튼 (MENU) : 초기 메뉴로 나가버린다.
  4. Exit 버튼 : day 2
    - 어플 종료

구현 결과

 

  • 초기 메뉴에서 Open 버튼을 눌렀을 때.

    새로운 Activity 사용(List Activity)

  • 파일 리스트 중 하나를 클릭 했을 때
    1.맨 윗줄에 파일 이름을 보여준다. (TextView)
    2.파일내용을 보여준다.(TextView)
    이 TextView에는 ScrollBar가 구현.
    3.하단부에 EDIT 버튼 추가
    EDIT버튼 클릭시 Day2에서 사용된 Edit Activity를 그대로 사용하며 파일 이름과 내용을 보내준다.
    4.DEL버튼 추가
    열린 파일을 거침없이 삭제 해버린후에 창을 닫고 삭제 완료 메시지를 보여준다. Day2에서 사용된 Message Activity에 메시지 추가

  • 위 파일 오픈 창에서 EDIT버튼을 눌렀을 때
    Day 2 에서만든 Edit Activity 를 불러온와 파일 내용을 수정 할 수 있게 한다.

  • 파일 오픈 창에서 DEL 버튼을 눌렀을 때
    파일이 지워졌다는 메시지창을 보여준다.

 

주요 코드

리스트에서 선택된 position 받아와 선택된 파일읽어 오기

String[] sReadFile = new String[2];        //[0] 파일이름 , [1] 파일내용

public void setReadFile(int pos){

sReadFile[FILENAME] = mFileList[pos];

    try {

        FileInputStream fis = openFileInput(mFileList[pos]);

//파일 크기만큼 buffer 열기

        buffer = new byte[fis.available()];                

//버퍼안에다 넣기

        fis.read(buffer, 0, fis.available());            

//byte string으로 변환 readFile에는 메모의 내용이 들어간다

        sReadFile[FILECONTENT] = byteToString(buffer);    

        fis.close();

    } catch (Exception e) {

        e.printStackTrace();

    }

}

byteToString 메소드

public String byteToString(byte buffer[]) {

    char[] cBuffer = new char[buffer.length];

 

    for(int i = 0 ; i < buffer.length ; i ++)

        cBuffer[i]=(char)buffer[i];

 

    return new String(cBuffer);

}

ListActivity 사용

public class OpenList extends ListActivity implements Variable{

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

String[] mFileList; //파일리스트 받아올 String배열

      

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

 

if( fileList().length != 0 ){

    mFileList = fileList();

this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mFileList));

 

}else{

    //파일이 없다는걸 표시해 줘야 한다.

}

 

}

}


어설프게 모양새는 갖춰졌지만 에뮬레이터에서 테스트하며 뿜어내는 오류들 고쳐야하는데 ;;;

ㅜㅠ Activity 이동할 finish(); 사용한 부분도 있지만 그렇지 않고 이동할땐 finish();

한것과 안한것의 차이는 뭔지, finish();대신에 startActivity(intent); 불려지는거랑 차이가 뭔지 궁금

하다.

 

파일을 지워주고 리스트를 다시 받아오기 위해

mFileList = fileList();

this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mFileList));

부분을 다시 불러왔는데 에뮬레이터에서 테스트할때는 문제가 없었지만 뭔가 찜찜하다;;


파일보관용


 


Posted by ™설야