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

May*_*hta 3 android android-fragments android-activity otto

在我的应用程序中,我正在动态地将Fragments添加到主活动视图中的容器中.我想知道在添加Fragment时使用Otto时传递数据的最佳方法是什么.目前我正在这样做,请在示例中我不发布我的CustomObject

在我的主要活动中

    getSupportFragmentManager().beginTransaction()
                    .add(R.id.fragment_container, MY_CUSTOM_FRAGMENT).commit();
    BusProvider.getInstance().post(produceCustomString());
Run Code Online (Sandbox Code Playgroud)

在我的片段里面

    @Subscribe
    public void onCustomStringChanged(String customString) {
    } 
Run Code Online (Sandbox Code Playgroud)

Jak*_*ton 12

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

告知新数据碎片的最佳方法是,您有一个@Produce关于活动的方法:

@Produce public String produceCustomString() {
  return "Hello, World!";
}
Run Code Online (Sandbox Code Playgroud)

然后你所有的片段都有@Subscribe方法:

@Subscribe public void onCustomStringEvent(String event) {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

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