Ваши фрагменты хранятся в Activity
, и это действие передается onAttach()
. Таким образом, ваша деятельность должна нести ответственность за распределение связи между вашими фрагментами.
Итак, во FragmentB вы подключаете свою активность к интерфейсу слушателя, когда вы подключены:
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.onStockAddedListener = (OnStockAddedListener) context;
}
И вы реализуете интерфейс в своей деятельности:
public class MyActivity implements OnStockAddedListener {
@Override
public void onStockAdded(Stock stock) {
FragmentA fragmentA = (FragmentA) getSupportFragmentManager()
.findFragmentByTag(/* insert tag here */);
fragmentA.handleStockAdded(stock);
}
}
И вы получаете эти сообщения во Фрагменте А:
public class FragmentA {
public void handleStockAdded(Stock stock) {
// update ui, or whatever else you need
}
}
Главное, чтобы не думал о том, что FragmentA говорит с FragmentB, или FragmentB говорит с FragmentA. Вместо этого FragmentA и FragmentB оба взаимодействуют с Activity, и Activity может взаимодействовать (при необходимости) с FragmentA или FragmentB. Все течет через деятельность.