setFragmentResult와 setFragmentResultListener를 사용하면 된다!
Activity끼리의 이동에서는 갔다가 돌아올때 activityResultLauncher로 받아올 값을 정해줄 수 있었지만, Fragment는 Launcher를 사용할 수 없어서 검색해보니 스택오버플로우에 이런 글이 있었다.
질문은 Navigation을 사용할 때의 질문이었지만 등록된 답변 중 두 번째 답변이 FragmentManager를 통한 화면 이동을 한 경우에도 적용할 수 있어서 시도해보았다.
A_Fragment에서 B_Fragment로 이동한 후에 다시 B_Fragment에서 A_Fragment로 돌아오는 과정에서,
B_Fragment에는 아래와 같이 setFragmentResult를 설정하고
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
setFragmentResult("requestKey", bundleOf("bundleKey" to "bundleValue"))
return binding.root
}
A_Fragment에는 setFragmentResultListener를 설정해주면 된다.
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
setFragmentResultListener("requestKey"){ _, bundle ->
Log.d("test1234", "${bundle.getString("bundleKey")}")
}
return binding.root
}
그리고 실행해서 A_Fragment에서 B_Fragment로 이동했다가 다시 되돌아오면

setFragmentResult에서 설정하고 setFragmentResultListener에서 받아온 결과값을 확인할 수 있다.