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

커스텀뷰로 Textinputlayout을 만들어 사용하는데 힌트가 이상하게 적용됩니다

0 추천

 

커스텀뷰를 사용하여 뷰를만들려고 직접만들었는데 문제가 생겼습니다

해당 커스텀뷰에서 의 힌트값을 적용시키려고 자바를구성했습니다

아이디를 이용하여 sethint를 걸어 입력한 힌트를 넣어주었습니다

 

처음 실행됐을때는 정상적으로 실행이 되었습니다

그런데 화면이 회전하고 oncreate  가 다시 불러와지고 보니 마지막(텍스트)로 힌트가 고정이 되어버렸습니다

화면 회전시 뭔가 값이 변경되었나 싶어서 hint값을 확인했는데 정상적으로 들어오고 있었습니다

sethint에서 뭔가 문제가 생긴거같은데 뭔지 잘 모르겠어서 질문드립니다   oncreate가 다시 불러와져서 뭔가 값에 문제가 생긴건가요?

uesusy (220 포인트) 님이 2021년 3월 24일 질문

1개의 답변

0 추천
아마도 디바이스 로테이션(일종의 configuration change)이 발생한 후에 뷰상태 복구가 어떤 이유로 제대로 되지 못한 것으로 보입니다. 그 이유는 디버깅을 해야 정확히 알 수 있을 것 같습니다. 라이플사이클과 관련이 있기 때문에, 상황에 따라서는 수동으로 뷰상태를 저장했다 복구해 주셔야할 수도 있습니다. 위의 코드만으로는 그렇다 아니다를 말씀드릴 수는 없고, 님이 직접  디버깅을 해보셔서 확인하셔야 합니다.

아, 한가지 커스텀 컴포넌의 경우라면 생길 수 있는 증상이, 같은 커스텀 뷰를 여러개 한화면에 사용할 때, 디바이스 로테이션과 같은 경우에, 뷰상태가 제대로 복구되지 않습니다. 이유는 View Id와 관련이 있는 걸로 기억합니다. 이걸 방지하려면,  커스텀뷰 안에서 onSaveInstance, oeRestoreInstance를 이용하여 뷰하이어라키에 있는 뷰상태를 저장하고 복구해주셔야 합니다. 자주 쓰는 코드는 아니라서 정확한 코드는 기억이 나지 않네요. 구글링 해보세요.
spark (227,830 포인트) 님이 2021년 3월 24일 답변
spark님이 2021년 3월 24일 수정
...