使用Otto把数据从Activity传递到Fragment中

我在应用程序的主活动视图中动态的添加 Fragments到容器中。我想知道当使用Otto添加Fragment时,用什么方法传递数据最好。
这是我用的方法:
Main Activity

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

Fragment

@Subscribe
    public void onCustomStringChanged(String customString) 
    {
     } 

ChatGPT尝试为您解答
使用 Otto 在主活动和 Fragment 之间传递数据的一种方法是在主活动中使用 BusProvider.getInstance().post() 方法发布事件,然后在 Fragment 中使用 @Subscribe 注释来订阅该事件。


在这种情况下,你可以在 Main Activity 中使用 produceCustomString() 方法生成一个自定义字符串,然后将其作为参数传递给 BusProvider.getInstance().post() 方法。在 Fragment 中,你可以使用 @Subscribe 注释来订阅 onCustomStringChanged() 方法,该方法将接收到自定义字符串作为参数。


此外,还可以使用 Bundle 来在主活动和 Fragment 之间传递数据。要使用 Bundle 传递数据,你可以在 Main Activity 中使用 setArguments() 方法将 Bundle 添加到 Fragment 中,然后在 Fragment 中使用 getArguments() 方法检索该 Bundle。


举个例子,假设你想在主活动中传递一个名为 "custom_string" 的字符串到 Fragment,你可以在 Main Activity 中使用以下代码:

Bundle bundle = new Bundle();
bundle.putString("custom_string", "Hello, World!");
MY_CUSTOM_FRAGMENT.setArguments(bundle);

然后,在 Fragment 中,你可以使用以下代码检索字符串:

Bundle bundle = getArguments();
String customString = bundle.getString("custom_string");

这是使用 Otto 和 Bundle 在主活动和 Fragment 之间传递数据的一些示例方法。你可以根据自己的需求选择最适合的方法。