你的片段托管在一个 Activity ,那个活动就是传递给我们的 onAttach() 。因此,您的活动需要负责调度片段之间的通信。
Activity
onAttach()
因此,在FragmentB中,在附加时将Activity转换为侦听器接口:
@Override public void onAttach(Context context) { super.onAttach(context); this.onStockAddedListener = (OnStockAddedListener) context; }
并在Activity中实现界面:
public class MyActivity implements OnStockAddedListener { @Override public void onStockAdded(Stock stock) { FragmentA fragmentA = (FragmentA) getSupportFragmentManager() .findFragmentByTag(/* insert tag here */); fragmentA.handleStockAdded(stock); } }
你在FragmentA中收到这些消息:
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交谈(根据需要)。一切都流经活动。