Android 如何将数据从活动传递到片段内部的片段

Android 如何将数据从活动传递到片段内部的片段,android,android-fragments,android-activity,Android,Android Fragments,Android Activity,我有一个活动。它动态添加片段A片段A包含静态添加(通过xml)子片段B。当我将片段A添加到活动时,如何将数据从活动传递到片段B? 我知道下一种方法: 在活动中实现接口getter,并从片段B调用getter方法 我想知道,还有别的方法吗? 我尝试将参数从活动设置为片段A,通过子片段管理器查找片段B,并将参数从片段A设置为片段B。 但是片段B创建的时间早于片段A,所以我有例外。实现这一点的方法不止一种。方法之一是 在片段B中创建函数public void setData(数据数据) 将数据

我有一个
活动
。它动态添加
片段A
<代码>片段A包含静态添加(通过xml)子
片段B
。当我将
片段A
添加到
活动
时,如何将数据从
活动
传递到
片段B


我知道下一种方法:
活动
中实现接口getter,并从
片段B
调用getter方法

我想知道,还有别的方法吗?

我尝试将参数从
活动设置为
片段A
,通过子片段管理器查找
片段B
,并将参数从
片段A
设置为
片段B

但是
片段B
创建的时间早于
片段A
,所以我有例外。

实现这一点的方法不止一种。方法之一是 在片段B中创建函数public void setData(数据数据)

将数据从活动转移到片段A。因为片段B是由xml中的片段标记添加的。在片段A中创建对片段B对象的引用。现在您有了对片段A中片段B的引用

现在只需调用片段A中的函数(在片段B中创建),并传递活动接收到的数据

另一方面


在片段B中,您可以调用getActivity()并将其类型强制转换为活动类类型,并调用其方法,该方法可以返回所需的数据。方法之一是 在片段B中创建函数public void setData(数据数据)

将数据从活动转移到片段A。因为片段B是由xml中的片段标记添加的。在片段A中创建对片段B对象的引用。现在您有了对片段A中片段B的引用

现在只需调用片段A中的函数(在片段B中创建),并传递活动接收到的数据

另一方面


在片段B中,您可以调用getActivity()并将其类型强制转换为您的活动类类型,并调用其方法,该方法可以返回所需的数据


谷歌提供的这个示例应该可以解决您的所有问题:

您可以尝试将数据从活动传递到片段B。在活动中,调用此
EventBus.getDefault().post(new MessageEvent())

然后您只需要在片段B的onCreateView中注册EventBus

EventBus.getDefault().register(this);
然后

@Subscribe
public void onEvent(MessageEvent event){

    // DO SOMETHING
}
您可以尝试将数据从活动传递到片段B。在活动中调用this
EventBus.getDefault().post(newmessageevent())

然后您只需要在片段B的onCreateView中注册EventBus

EventBus.getDefault().register(this);
然后

@Subscribe
public void onEvent(MessageEvent event){

    // DO SOMETHING
}

这样的方式我已经在上面描述了这样的方式我已经在上面描述了感谢的方式我已经自己实现了第一种方式。我在Fragment Bthank的Fragment(Fragment childFragment)方法中得到了Fragment B引用,我已经用自己的第一种方式实现了。我在片段B的片段(Fragment childFragment)方法中获得了片段B引用