在我的应用程序中,我将动态地向主活动视图中的容器添加片段。我想知道在添加片段时,使用otto传递数据的最佳方式是什么。目前我是这样做的,请举例来说,我没有发布我的customobject
在我的主要活动中

    getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, MY_CUSTOM_FRAGMENT).commit();
    BusProvider.getInstance().post(produceCustomString());

在我的碎片里
    @Subscribe
    public void onCustomStringChanged(String customString) {
    }

最佳答案

如果注册了同一类型的@Subscribe方法,则会自动调用用@Produce注释的方法。
通知此类新数据片段的最佳方法是对活动使用@Produce方法:

@Produce public String produceCustomString() {
  return "Hello, World!";
}

然后所有的片段都有@Subscribe方法:
@Subscribe public void onCustomStringEvent(String event) {
  // ...
}

当您注册具有此方法的片段时,otto将调用活动上的@Produce方法,以获取它将传递给片段方法的最新值。

10-08 18:24