-->

从活动数据传递到碎片使用奥托(Passing data from Activity to Fragm

2019-08-08 18:37发布

在我的申请,我动态地添加片段在主要活动视图的容器。 我想知道什么是使用奥托时,当我们添加片段传递数据的最佳方式。 目前,这是我如何做,请例如,在我没有张贴我CustomObject

在我的主要活动

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

在我的片段

    @Subscribe
    public void onCustomStringChanged(String customString) {
    } 

Answer 1:

带注释的方法@Subscribe将自动被调用,如果你也有一个@Produce用于注册了相同类型的方法。

通知这样的数据的新片段,最好的办法是你有一个@Produce上的活动方法:

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

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

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

当您注册具有这种方法的片段,奥托将调用@Produce上的活动方法获取它会传递给片段的方法,最新值。



文章来源: Passing data from Activity to Fragment using Otto