[ANDROID] - Activity 에서 Fragment 로 데이터 보내기

CHA·2023년 4월 18일

문제

보통 Activity 에서 Fragment 로 데이터를 전달하고자 할 때, argument 를 이용해 데이터를 put 한 뒤, fragment 에서 데이터를 사용했다. 다만, 이러한 방법은 fragment 가 처음 생성될 때, 혹은 replace 될 때 사용할 수 있는 방법이다. 이미 attach 된 상황이라면 이 방법 보다는 프래그먼트 내부에 임의의 함수를 만들어 사용하는 방법이 좋다.

해결

데이터를 이용하고자 하는 프래그먼트 내부에 setData() 와 같은 함수를 만든다. 그 이후 Activity 에서 findFragmentById 등을 이용하여 프래그먼트를 찾을 수 있다.

(supportFragmentManager.findFragmentById(R.id.container_fragment) as HomeFragment).setData(searchItems)

xml 에서 fragment 를 정적으로 만들어 주었다면 id 값을 부여해 findFragmentById 를 사용할 수 있으며, 동적으로 만들어 주었다면 생성시 Tag 값을 부여해 findFragmentByTag 를 사용할 수 있다. 단, 위 코드와 같이 사용한다면 현재 resume 되어있는 fragment 를 찾아올 수 있다.

profile
Developer

0개의 댓글