인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

거베라님의 프로필 이미지
거베라

작성한 질문수

냉동코더의 알기 쉬운 Modern Android Development 입문

Practice2D 강의에서 질문 있습니다.

작성

·

117

1

안녕하세요!
'Practice2D-검색결과를 UI에 표시하기' 강의에서 searchBooks()가 onViewCreated() 안에서 한번 호출되고 searchBooks() 블록이 끝난 후에도 etSearch의 입력값이 변경될 때마다 콜백함수 내에서 searchBooks()블록 내에서 선언한 startTime과 endTime에 접근할 수 있는 이유가 궁금합니다.
 

답변 1

1

냉동코더님의 프로필 이미지
냉동코더
지식공유자

EditText의 속성 중 addTextChangedListener를 사용하면 EditText에 값이 입력될 때마다 수행할 동작을 지정할 수 있습니다. 단순히 입력후 만이 아니라 TextWatcher를 사용하면 입력직전, 입력직후, 값을 대체했을 때의 상황에 따라 지정을 할 수도 있습니다. 참고할 수 있는 링크를 붙여드립니다. :)

https://stackoverflow.com/a/40569759

거베라님의 프로필 이미지
거베라
질문자

냉동코더님 답변 감사드립니다:)

그런데 아직 제가 궁금했던 부분은 해결되지 않아서 다시 질문드리도록 하겠습니다!

searchBooks() 블록이 끝난 이후에도 addTextChangedListener로 등록한 콜백함수에서 searchBooks의 지역변수인 startTime과 endTime에 접근할 수 있는 이유가 궁금했습니다!

searchBooks가 끝나면 searchBooks에 있는 지역변수들이 메모리에서 사라져서 접근하지 못할 것 같다고 생각했는데, 계속 접근할 수 있어서 예상대로 잘 동작하는 것 같아서 질문드렸습니다ㅠㅠ!

냉동코더님의 프로필 이미지
냉동코더
지식공유자

searchBooks()는 함수라기보다는 onViewCreated() 내부의 코드를 내용에 따라 단순히 하나로 묶은것이라고 생각하시면 이해가 더 빠르게 되실 것 같습니다.

SearchFragment가 시작되면 프래그먼트를 전환하기 전까지는 onViewCreated 속의 코드가 실행되는데 startTime, endTime, binding.etSearch는 실제로는 모두 onViewCreated 스코프 안에서 동작하고 있기 때문에 문제없이 작동하는 것이죠. :)

거베라님의 프로필 이미지
거베라
질문자

이해가 되었습니다!! 감사합니다 :)

거베라님의 프로필 이미지
거베라

작성한 질문수

질문하기