위와 같이 부모, 자식으로 관계를 갖고 있는 fragment는 manager에게 자식이 키와 데이터를 전송하면 parent는 데이터를 manager로부터 받고 Listner로 받은 데이터를 처리할 수 있다.
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 객체를 매니저에게 전달한다.
@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()를 사용한다.