String A_0 = "다시 한번 확인합니???!?";
Intent In = new Intent(Trauma_GameA_0.this, Trauma_Save.class);
In.putExtra("Save", A_0);
startActivity(In);
///////////////////////////////////////////
public void onPause(){
super.onPause();
Intent In = getIntent();
Trauma_DataBase TDB = new Trauma_DataBase();
String Str = new String(In.getStringExtra("Save"));
TDB.setTrauma_UserData(Str);
try{
Log.e("Msg", "Saves Start");
FileOutputStream Fos = openFileOutput("ExSave.sav", Context.MODE_PRIVATE);
Log.e("Msg", "Saves Path Succes");
Fos.write(Str.toString().getBytes());
Log.e("Msg", "Saves Succes");
} catch (Exception e) {
Log.e("Msg", "Not Saves Fucking");
e.getMessage();
}
}
이렇게 제작하였습ㄴ다.
근데 실제로는 사실 위의 원 클래스에서 Save 클래스를 넘겨받아 저장을 하고 바로 로드하여 화면에 보여주는 식인데 먼저
첫번째 문제
실제
String A_0 = "다시 한번 확인합니???!?";
Intent In = new Intent(Trauma_GameA_0.this, Trauma_Save.class);
넘어가면서 무조건 A_0 이라는 변수가 Save 클래스에 념어가서 바로 저장이 되야 하는데 바로 저장이 되지 않고 실행하고 뒤로가기 한다음 다시 작업을 진행되야 그때서야 저장이 됩니다.
두번째 문제
Save 클래스가 화면에 뿌려집니다. 즉 Save 클래스는 화면에 뿌리는 개념이 아니라 단순히 파일로 저장만하면 되는 기능인데 이렇게 저장이 됩니다.
일반적인 자바처럼 그냥 단순히 생성자로 사용하려 해도 opneFileOutput/Input 사용으로 인해 액티비티를 상속받아야 하고 이때문에 인텐드까지 사용하게 됩니다.
즉 저장은 되나 세이브 클래스가 화면에 보여집니다..
...
이것을 어떻게 해야 할까요?
답이 안나와요.. 3일째.. 죽을 것 같습니다.. 답변 부탁드립니다.
문제 해결에 더 필요한 자료가 필요하시다면 답글 달아주세요. 다 올릴게요 ㅠ.ㅠ;;
<첫번째 문제>
onPause()에 저장하는 부분을 넣었으니 당연히 Save Activity를 불렀을때 안되고
Save Activity를 종료하거나, 다른 화면으로 넘어갈때 되겠죠.
<두번째 문제>
openFileOutput/Input 은 Context안에 있는 메소드 이므로
Save 클래스를 생성할때 context를 넘겨주면 될 듯 합니다.
(예) : Save mSave = new Save(Trauma_GameA_0.this)) )
Save클래스에서 context값을 mCon에 저장했다면
mCon.openFileOuput(~~~~~);
의도를 잘 모르겠네요
실제 파일에 저장하는 부분은 onPause 부분인데
왜 onPause에 이걸 넣어놨는지 궁금합니다~~
그리고 단순 저장이 목적이면 인텐트를 왜 구지 써야하는지도 그렇구요~이게 두번째 문제랑 연관되네요~~