본문 바로가기
2023년 이전/Android

EditText의 유지

by JeongUPark 2021. 12. 3.
반응형

오늘 안드로이드 카톡방에서 신기한 문의가 있었습니다.

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

 

프래그먼트로 상태 저장  |  Android 개발자  |  Android Developers

프래그먼트로 상태 저장 다양한 Android 시스템 작업은 프래그먼트 상태에 영향을 미칠 수 있습니다. 사용자 상태가 저장되도록 Android 프레임워크에서는 프래그먼트와 백 스택을 자동으로 저장하

developer.android.com

위 링크를 참조하면 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