在我的应用程序中,我正在动态地将Fragments添加到主活动视图中的容器中。我想知道在添加Fragment时使用Otto时传递数据的最佳方法是什么。目前我正在这样做,请举例说明我不发布我的CustomObject
在我的主要活动中
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, MY_CUSTOM_FRAGMENT).commit();
BusProvider.getInstance().post(produceCustomString());
我的片段里面
@Subscribe
public void onCustomStringChanged(String customString) {
}
答案 0 :(得分:12)
如果您对注册的相同类型也有@Subscribe
方法,则会自动调用使用@Produce
注释的方法。
告知新数据片段的最佳方法是,您在活动中使用@Produce
方法:
@Produce public String produceCustomString() {
return "Hello, World!";
}
然后是所有具有@Subscribe
方法的片段:
@Subscribe public void onCustomStringEvent(String event) {
// ...
}
当您注册具有此方法的片段时,Otto将调用活动上的@Produce
方法以获取将传递给片段方法的最新值。