Fragment간 popBackStack()으로 돌아올 때 데이터 전달방법

MSU·2024년 5월 26일

Android

목록 보기
5/36

setFragmentResultsetFragmentResultListener를 사용하면 된다!

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에서 받아온 결과값을 확인할 수 있다.

profile
안드로이드공부

0개의 댓글