应用于嵌套片段的片段间通信?

39

Android开发者网站上有一篇很棒的文章,介绍如何使用接口在以下情况下进行通信:

  1. Fragment及其托管的Activity
  2. 由同一Activity托管的两个Fragment

我正在尝试将这个概念应用到嵌套片段中。特别是,getActivity()Fragment#onAttach(Activity)用于告诉您哪个Activity托管了一个Fragment

在嵌套片段的情况下,相应的等效方法是什么?一个“子”Fragment如何知道它所包含在的“父”Fragment?而不知道这一点,子Fragment怎么能向其父Fragment传递事件?

一种明显的方法是从子Fragment广播意图,并使父Fragment监听广播,但我更愿意使用基于interface的方法。

1个回答

60

原来有一个getParentFragment()方法用于处理嵌套的片段。它在API 17中可用于android.app.Fragment,但可以在旧版本上使用android.support.v4.app.Fragment

我简直不敢相信我竟然忽略了这个API!

编辑:

我发现this gist可以使得确定父组件(无论是Fragment还是Activity)的过程变得简单、优雅和安全!


9
是的,如果一个片段在另一个片段中,则getParentFragment()是正确的方法。如果您想让同一层嵌套的片段彼此交谈(即获取2个子片段进行交谈),请使用getTargetFragment()和setTargetFragment()。 - Joseph Earl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接