使用Otto将数据从Activity传递到Fragment

时间:2013-01-29 22:15:27

标签: android android-activity android-fragments otto

在我的应用程序中,我正在动态地将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) {
    } 

1 个答案:

答案 0 :(得分:12)

如果您对注册的相同类型也有@Subscribe方法,则会自动调用使用@Produce注释的方法。

告知新数据片段的最佳方法是,您在活动中使用@Produce方法:

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

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

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

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