我有Activity
。它动态添加Fragment A
。 Fragment A
包含静态添加(按xml)子Fragment B
。当我将Activity
添加到Fragment B
时,如何将数据从Fragment A
传递到Activity
?
我知道下一个方法:
在Activity
中实现接口getter并从Fragment B
调用getter方法
我想知道,还有其他办法吗?
我尝试从Activity
到Fragment A
设置参数,通过子片段管理器查找Fragment B
并将参数从Fragment A
设置为Fragment B
。
但Fragment B
早于Fragment A
创建,所以我有例外情况。
答案 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
}