기본 안드로이드에 깔려있는 메모장을 보고 그대로 따라하고있는데~
전체적인 구조는
A액티비티, B액티비티 2개가 있습니다.
A액티비티는 "add item 버튼"과 그 밑에는 "listview"를 통해 파일입출력(FileOutStream)으로 저장한 txt파일에 내용을 받아서 출력하는것이고,
"add item" 버튼을 누르면 B액티비티로 넘어가지는데요.
B액티비티는 EditText의 내용을 쓰고 "저장버튼"을 누르면 저장이 되고, A액티비티로 다시 넘어가서 listview에 방금 저장한 내용
이렇게 말로 설명해드리는 것보다 사진보여드리겠습니다.
<초기 화면> <Add Note 버튼 눌렀을 경우>, <저장 버튼 눌렀을 경우, count값 증가x>
하루동안 시도해봤는데 안풀리는 궁금점이있습니다.
저장버튼 클릭시 호출하는 Save() 메소드 입니다.
int count=1;
public void Save()
{
try
{
//byte[] buffer = stringToByte(edit.getText().toString());
FileOutputStream fos = openFileOutput("text"+count+".txt", Context.MODE_PRIVATE);
count++;
fos.write(edit.getText().toString().getBytes());
fos.close();
Toast.makeText(this, "저장이 완료되었습니다.", Toast.LENGTH_SHORT).show();
}
catch(IOException e)
{
e.printStackTrace();
}
Intent intent = new Intent(this, MainActivity.class);
startActivityForResult(intent, 0);
}
///////////////////////////////////////////////////////////////
그리고 A액티비티의 OnCreat()메소드입니다.
int count=1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView)findViewById(R.id.listview);
try{
FileInputStream fis = openFileInput("text"+count+".txt");
count++;
byte[] data = null;
try {
data = new byte[fis.available()];
} catch (IOException e) {
e.printStackTrace();
}
try {
while(fis.read(data)!=-1){;}
} catch (IOException e) {
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
list=new ArrayList<String>();
list.add("김유신"+count);
list.add(new String(data));
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
listView.setAdapter(adapter);
listView.setDivider(new ColorDrawable(Color.BLACK));
listView.setDividerHeight(2);
adapter.notifyDataSetChanged();
}
catch(FileNotFoundException e)
{
Toast.makeText(this, "파일이 없습니다.", Toast.LENGTH_SHORT).show();
}
}
제가 구현하고 싶은 것은 위에 빨간색글씨인 count라는 변수를 텍스트의 이름에 추가하되,
텍스트를 하나씩 저장하면 그에 맞춰서 count라는 변수도 하나씩 증가되서 text1.txt , text2.txt
이런식으로 저장하고
A액티비티에 count변수도 그에 맞춰서 하나씩 증가하면서 이름에 따라 알맞게 list에 추가하는 것입니다.
하지만 문제가 A액티비티의 count, B액티비티 count 두 변수 모두 증가가되지 않고
계속 처음에 초기화했던 1로 제자리 걸음을 해서 파일을 계속 덮네요...ㅠㅠ
혹시나 지역변수로해서 그럴 수도 있어서
전역변수로하고
count++의 위치를 바꿔보고
B액티비티에서
A n = new A();
n.count++; 이런식으로도 해봤지만
count값은 여전히 변할 생각을 안하네요 ㅜㅜ
어떤것이 잘못된건가요?
긴 글 읽어주셔서 감사합니다
성근님 강좌 너무 잘 보고있어요!!
즐거운 하루 되세요~
댓글
댓글 리스트-
작성자변씨 작성자 본인 여부 작성자 작성시간 13.08.08 헐............... 엄청 간단한거였네요
하.................. 회의감이드네
감사합니다 ㅜㅜㅜ -
작성자변씨 작성자 본인 여부 작성자 작성시간 13.08.08 count값은 증가하는데 텍스트 추가할때마다 똑같이 김유신 밑에 줄에 계속 덮어쓰네요
왜 그런지 잘모르겠지만 이것도 고민해보겠습니다
정말감사합니다 -
작성자parmenas 작성시간 13.08.08 글밑에 줄넣는거는 의도 하신거 아닌가여 ?
-
작성자변씨 작성자 본인 여부 작성자 작성시간 13.08.08 네 의도한건데 제가 말한것은 listview 항목이 2번째 자리에서 계속 중복되어서 나타난다는것이였는데
arraylist도 static으로 하니까 되네요. 정말 감사합니다
더 열심히 공부하겠습니다. -
답댓글 작성자홍익컴공 작성시간 13.11.26 저도 안드로이드공부중인데여! 기본 메모장어플보고 그냥 자기가 구현하시는거에여? 아니면 소스 얻어서 그거 토대로 보고 공부중이신가여?? 저는 안드로이드 개념만 공부하다보니 별로 느는것같지가 않아서 저도 어플을 만들면서 공부하고 싶어 질문드립니다.