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

viewBinding 질문

0 추천
1. 질문

하나의 Activity에 여러 Fragment를 교차하여 화면을 출력할때 Activitiy컴포넌트에서 Fragment에 있는 view의id를 쓰려고 하는데 findViewById()로는 잘 되는데 viewBinding으로 Fragment에 있는 뷰를 사용 하려면 어떻게 해야하나요?

 

2. 질문

보통 다른 액티비티나 Fragment에 있는 뷰에 접근하기 위해서는 어떤 식으로 접근 하는 지 알려주시면 감사하겠습니다ㅠㅠ
songjae5426 (1,800 포인트) 님이 2023년 2월 2일 질문
songjae5426님이 2023년 2월 2일 수정

1개의 답변

0 추천
안드로이드에서 앧티비티-프래그먼트간 데이터/이벤트 교환시, 권장되는 방식은 아래 링크들에 나와있습니다.어떻게 액티비티와 프래그먼트 사이에 이벤트를 주고 받는지에 대해서 알려주고 있습니다.

https://developer.android.com/guide/fragments/communicate
https://medium.com/@m7mdra/how-to-communicate-between-fragment-and-activity-22fef9213535

뷰만을 찾는 거면 프래그먼트에 해당 뷰를 가져오는 멤버변수 또는 getter를 두고. 액티비티에서 FragmentManager.findFragmentById/findFragmentByTag를 사용하셔서 프레그먼트에 있는 멤버변수/getter에접근하시면 되겠죠.. 단순히 뷰에 대한 접근이 아니라 뷰를 조작하는 거라면 프래그먼트에 해당 로직을 가진 메소드를 두고 이걸 호출하는게 더 낫겠죠.

위의 방법 중에서 님에게 가장 적합한 방법을 선택하시고, 그 방법을 통하여 액티비티 - 프래그먼트 간에 필요한 처리를 하시기 바랍니다. 참고로 두번째 블로그의 마지막 EventBus는 당장은 편하지만, 주의해서 사용하지 않으면 코드관리도 엉망이되고 디버깅이 엄청 골치가 아파지는 등의 부작용이 있어서, 커뮤니티에서는 사용을 잘 하지 않습니다.

둘간의 데이터/이벤트 교환에서 중요한 건 해당 기능이 프래그먼트에 속한다면,  액티비티에서 처리하려하지 말고 프래그먼트에  맡기는 것이 더 좋은 구조라는 것입니다. 남의 집에서 우리집에 대해 모르는데, 우리집 일에 관여하는 것에 비슷하다고 볼 수 있습니다.
spark (227,830 포인트) 님이 2023년 2월 2일 답변
...