오늘 안드로이드 카톡방에서 신기한 문의가 있었습니다.
onCreate 메소드에 다음 명령어를 작성하고
edittext.setText("${savedInstanceState.toString}")
run을 하면 화면에
Edittext 부분에 null이라고 찍히고
null을 nully로 바꾼 후 화면을 가로로해서 다시 확인 해보면 nully로 입력한 것이 그대로 유지된다는 내용이었습니다. (원하는 것은 savedInstanceState의 내용을 확인하는 것입니다.)
그래서 해보니 가로로해서 화면 전환이 일어난 후 onCreate가 불렸는데, nully가 유지되는 것을 확인하고 우선 savedInstanceState값을 그럼 어떻게 변경하지 해서 고민해보니 딜레이를 주고 setText하면 되겠네 해서 적용하니 savedInstanceState의 값을 EditText에 잘 적용하였습니다.
그럼 왜 nully가 유지되는 걸까? 그 부분은 다른 분이 알려 주셨는데,
https://developer.android.com/guide/fragments/saving-state
위 링크를 참조하면 fragment에서의 유지를 확인 할 수 있고,
EditText는 타고들어가보시면 getFreezesText 의값이 true로 박혀있어 그 값이 유지된다는 것을 확인 할 수 있었습니다.
부가 설명을 들어보니
부모인 TextView는 freezesText를 변경가능하게 되어있고 기본도 false지만 상속하고있는 EditText는 freezesText값이 true로 강제되어있어 상태가 보존된다고 알고 있습니다.
라고 설명해주셨습니다. (설명해주신 분도 위 내용을 다 읽어 보진 못한 상태에서 설명해주신거라 확실지 않다고 하셨는데, 이 부분이 맞는것 같습니다.
추가로 생명주기도 공부하면 더 잘 이해가 될 것으로 생각됩니다.
'2023년 이전 > Android' 카테고리의 다른 글
Hilt를 사용한 ViewModel (0) | 2021.12.03 |
---|---|
Hilt (0) | 2021.12.03 |
SafetyNet 보안 관련 (0) | 2021.12.03 |
In-App Reviews (0) | 2021.12.03 |
코틀린 안드로이드 익스텐션 비추천 (1) | 2020.11.06 |