'Practice2D-검색결과를 UI에 표시하기' 강의에서 searchBooks()가 onViewCreated() 안에서 한번 호출되고 searchBooks() 블록이 끝난 후에도 etSearch의 입력값이 변경될 때마다 콜백함수 내에서 searchBooks()블록 내에서 선언한 startTime과 endTime에 접근할 수 있는 이유가 궁금합니다.
EditText의 속성 중 addTextChangedListener를 사용하면 EditText에 값이 입력될 때마다 수행할 동작을 지정할 수 있습니다. 단순히 입력후 만이 아니라 TextWatcher를 사용하면 입력직전, 입력직후, 값을 대체했을 때의 상황에 따라 지정을 할 수도 있습니다. 참고할 수 있는 링크를 붙여드립니다. :)
searchBooks()는 함수라기보다는 onViewCreated() 내부의 코드를 내용에 따라 단순히 하나로 묶은것이라고 생각하시면 이해가 더 빠르게 되실 것 같습니다.
SearchFragment가 시작되면 프래그먼트를 전환하기 전까지는 onViewCreated 속의 코드가 실행되는데 startTime, endTime, binding.etSearch는 실제로는 모두 onViewCreated 스코프 안에서 동작하고 있기 때문에 문제없이 작동하는 것이죠. :)
냉동코더님 답변 감사드립니다:)
그런데 아직 제가 궁금했던 부분은 해결되지 않아서 다시 질문드리도록 하겠습니다!
searchBooks() 블록이 끝난 이후에도 addTextChangedListener로 등록한 콜백함수에서 searchBooks의 지역변수인 startTime과 endTime에 접근할 수 있는 이유가 궁금했습니다!
searchBooks가 끝나면 searchBooks에 있는 지역변수들이 메모리에서 사라져서 접근하지 못할 것 같다고 생각했는데, 계속 접근할 수 있어서 예상대로 잘 동작하는 것 같아서 질문드렸습니다ㅠㅠ!