3

在我的应用程序中,我将片段动态添加到主活动视图中的容器中。我想知道在添加 Fragment 时使用 Otto 时传递数据的最佳方式是什么。目前这就是我的做法,请在示例中我没有发布我的 CustomObject

在我的主要活动中

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

在我的片段里面

    @Subscribe
    public void onCustomStringChanged(String customString) {
    } 
4

1 回答 1

12

@Subscribe如果您还@Produce注册了相同类型的方法,则将自动调用带有注释的方法。

通知此类新数据片段的最佳方法是您@Produce在活动上有一个方法:

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

然后是所有有方法的片段@Subscribe

@Subscribe public void onCustomStringEvent(String event) {
  // ...
}

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

于 2013-01-29T23:46:22.117 回答