데이터를 다시 전달하는 가장 쉬운 방법은 setArgument ()입니다. 예를 들어 fragment3, fragment1-> framgnet2-> fargment3을 호출하는 fragment2를 호출하는 fragment1이 있습니다.
fragment1에서
public void navigateToFragment2() {
if (fragmentManager == null) return;
Fragment2 fragment = Fragment2.newInstance();
String tag = "Fragment 2 here";
fragmentManager.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.add(R.id.flContent, fragment, tag)
.addToBackStack(null)
.commitAllowingStateLoss();
}
fragment2에서는 평소처럼 fragment3을 호출합니다.
private void navigateToFragment3() {
if (fragmentManager == null) return;
Fragment3 fragment = new Fragment3();
fragmentManager.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.replace(R.id.flContent, fragment, tag)
.addToBackStack(null)
.commit();
}
fragment3에서 작업을 마치면 다음과 같이 호출합니다.
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
if (fragmentManager == null) return;
fragmentManager.popBackStack();
Bundle bundle = new Bundle();
bundle.putString("bundle_filter", "data");
fragmentManager.findFragmentByTag("Fragment 2 here").setArguments(bundle);
이제 fragment2에서 쉽게 인수를 호출 할 수 있습니다.
@Override
public void onResume() {
super.onResume();
Bundle rgs = getArguments();
if (args != null)
String data = rgs.getString("bundle_filter");
}
onActivityResult
원하는 경우 부모 조각의 메서드를 다시 호출 할 수 있습니다 .