안드로이드 개발 질문/답변
(글 수 45,052)
특정 Activity에 아래와 같은 구문이 있습니다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText et = (EditText)findViewById(R.id.edittexttest);
et.setText("written by onCreate()");
}
이때 Activity 가 활성 되면 EditText(R.id.edittexttest)의 값을 임의로 변경시키고, 홈키 전환을 통해 언어변경을 하였습니다.
언어 변경후 back key를 통해 다시 해당 Activity화면으로 돌아올때 onCreate()문을 거칠텐데, 왜 초기 값인 "written by onCreate()"가
나타나지 않고 변경한 문구가 나타날까요?
이 현상에 대한 내용이나 참고해야할 사이트, 문서 등을 알고 계신분은 답변주시면 고맙겠습니다.
2011.05.17 19:00:48
착실이 // 댓글에 댓글 다는 법을 몰라 이렇게 바로 올립니다. MotoQRTY 테스트 폰을 통해 언어 변경시에 onDestroy()를 통하여 종료된 직후 바로 onCreate()를 호출하는 것을 확인하였습니다. 언어를 변경하면 이와 같이 onDestroy -> onCreate -> onResume .... 순서로 호출이 되며, 해당 언어의 문자열을 적용하는 듯 보이는데, 제 생각에는 이와 같은 사례에서 xml에 구성되어있는 EditText 위젯에 기존에 입력되어있던 값을 적용하는 루틴이 있는 것 같습니다.




을 검색해보시면 될것 같구요.
OnCreate는 말그대로 액티비티를
생성할때만 호출 됩니다
액티비티를 이동하면서 finish를
하지 않았다면 그 액티비티는 눈에는
보이진 않지만 아직 살아있는 상태입니다.
그래서 백키를 눌러도 OnCreate는 호출되지
않습니다.
글쓴것과 같은 상태를 원하신다면
OnResume에 Edittext소스를 작성하셔야 합니다