[Android studio] Fragment간 데이터 전송

노유성·2023년 7월 3일
0
post-thumbnail

구조


위와 같이 부모, 자식으로 관계를 갖고 있는 fragment는 manager에게 자식이 키와 데이터를 전송하면 parent는 데이터를 manager로부터 받고 Listner로 받은 데이터를 처리할 수 있다.

예제

child fragment

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Bundle result = new Bundle();
        result.putString("bundleKey", "result");
        getParentFragmentManager().setFragmentResult("requestKey", result);
    }
})

자식은 매니저를 호출해서 key와 bundle 객체를 매니저에게 전달한다.

parent fragment

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // We set the listener on the child fragmentManager
    getChildFragmentManager().setFragmentResultListener("key", this, new FragmentResultListener() {
        @Override
        public void onFragmentResult(@NonNull String key, @NonNull Bundle bundle) {
            String result = bundle.getString("bundleKey");
            // Do something with the result..
        }
    });
}

부모는 인자로 자식이 보낸 key값과 bundle 객체를 매니저로부터 받는다.

여기서 중요한 점은 부모, 자식 관계에서는 getChildFragmentManager()를 사용하고

위 사진과 같이 형제 fragment끼리 데이터를 주고 받을 때는 getParentFragmentManager()를 사용한다.

profile
풀스택개발자가되고싶습니다:)

0개의 댓글