如何将数据从Activity传递到片段内的片段

时间:2017-07-08 09:07:36

标签: android android-fragments android-activity

我有Activity。它动态添加Fragment AFragment A包含静态添加(按xml)子Fragment B。当我将Activity添加到Fragment B时,如何将数据从Fragment A传递到Activity

我知道下一个方法:
Activity中实现接口getter并从Fragment B调用getter方法

我想知道,还有其他办法吗?

我尝试从ActivityFragment A设置参数,通过子片段管理器查找Fragment B并将参数从Fragment A设置为Fragment B。 但Fragment B早于Fragment A创建,所以我有例外情况。

3 个答案:

答案 0 :(得分:2)

有很多方法可以实现这一目标。其中一个方法是 在Fragment B中创建一个函数public void setData(Data data)

将数据从Activity传输到Fragment A.因为Fragment B是由xml中的fragment标签添加的。在片段A中为你的片段B对象创建引用。现在你可以在A中引用片段B.

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

其他方式..

在Fragment B中,您可以调用getActivity()并将其类型转换为您的Activity类类型,并调用其可以返回所需数据的方法

答案 1 :(得分:0)

Google的此示例应解决您的所有问题:

https://developer.android.com/training/basics/fragments/communicating.html

答案 2 :(得分:0)

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

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

EventBus.getDefault().register(this);

然后

@Subscribe
public void onEvent(MessageEvent event){

    // DO SOMETHING
}