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

액티비티 상태 저장관련 질문입니다.

0 추천

 

public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

 requestWindowFeature(Window.FEATURE_NO_TITLE);
 requestWindowFeature(Window.FEATURE_LEFT_ICON);
 setContentView(R.layout.customer);

 EditText PhoneNum = (EditText)findViewById(R.id.phone);
 PhoneNum.setText(phoneNum());

 EditText Address = (EditText)findViewById(R.id.address);
 Address.setText(phoneAddress());

 getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, 
   android.R.drawable.ic_dialog_alert);

  /////////////////////액티비티 상태 저장///////////////////////////////
 SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE); 
 EditText menulist = (EditText)findViewById(R.id.menulist);
 EditText price = (EditText)findViewById(R.id.price);
  
 String text1 = pref.getString("editText1", "");
 String text2 = pref.getString("editText2", "");
  
 menulist.setText(text1);
 price.setText(text2);
////////////////////상태저장/////////////////////////
Button btnSave = (Button)findViewById(R.id.save);
btnSave.setOnClickListener(new Button.OnClickListener(){
 public void onClick(View v){
  onRestart();
  Customer.this.finish();
 }
});
public void onRestart(){ // 어플리케이션이 화면에서 사라질때 
super.onRestart(); 
 SharedPreferences pref = getSharedPreferences("pref", MODE_PRIVATE); // UI 상태를 저장합니다. 
 SharedPreferences.Editor editor = pref.edit(); // Editor를 불러옵니다. 
 
 EditText menulist = (EditText)findViewById(R.id.menulist);
 EditText price = (EditText)findViewById(R.id.price);
 
 editor.putString("editText1", menulist.getText().toString());
 editor.putString("editText2", price.getText().toString());
 editor.commit(); // 저장합니다. 
}

버튼을 누르게 되면 현재 액티비티의 상태를 저장하면서 액티비티가 종료되게끔 만들었습니다.

한가지 문제가 있는데....

만약 제가 1번 액티비티에서 버튼 생성을 하게되면 버튼이 하나 생기고

그 버튼을 누르게 되면 2번 액티비티를 띄우게 됩니다. 2번 액티비티에서 상태를 저장하게 되면 저장된 후에 2번 액티비티가 저장이 되면서 1번 액티비티로 돌아오게 되는데

문제는 1번에서 두번째 버튼을 생성하고 그 버튼 또한 2번 액티비티로 연결하게 만들게 되면 처음에 저장된 2번의 액티비티가 뜨게 됩니다.

새로 생성된 버튼을 누르면 깨끗한 2번 액티비티가 나오게끔 해야하는데 그 전에 저장된 2번 액티비티가 나오는겁니다.

이떻게 해결해야 좋을까요?

뽀송방댕이 (520 포인트) 님이 2013년 10월 3일 질문

1개의 답변

+1 추천
우선  ActivityLifecycle을 다시한번 보시길 바랍니다.

그리고1번 Activity에서  Intent에 값을 넣어서 넘겨주고 (intent.putExtra)

2번 Activity의 onCreate에서 체크 후 저장된 상태를 불러 오기하면 문제가 해결 될거같습니다.
q1212 (26,020 포인트) 님이 2013년 10월 4일 답변
...