Чтобы получить ссылку на родительский / внешний фрагмент, вы должны использовать getParentFragment API.
Шаг 1: В первом внутреннем фрагменте объявите новый передаваемый интерфейсданные из этого фрагмента во внешний фрагмент.
public class Inner1Fragment extends Fragment {
// Call this method when you want to pass data to outer fragment (such as users press on a button on this fragment)
private void onButtonClick() {
// Pass the message to OuterFragment.
OnMessageListener listener = (OnMessageListener) getParentFragment();
listener.onMessage("Message from Inner1Fragment");
}
// Declare an interface to pass data to outer fragment.
public interface OnMessageListener {
void onMessage(String message);
}
}
Шаг 2: Пусть внешний фрагмент реализует OnMessageListener
и записывает код для пересылки сообщения во второй внутренний фрагмент.
public class OuterFragment extends Fragment implements Inner1Fragment.OnMessageListener {
@Override
public void onMessage(String message) {
// Forward the message to Inner2Fragment
Inner2Fragment fragment = (Inner2Fragment) getChildFragmentManager().findFragmentByTag("Inner2Fragment");
if (fragment != null) {
fragment.onReceiveMessage(message);
}
}
}
Шаг 3: Во втором внутреннем фрагменте напишите код для обработки полученного сообщения (я показываю сообщение с помощью Toast API).
public class Inner2Fragment extends Fragment {
public void onReceiveMessage(String message) {
Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
}
}