我在应用程序的主活动视图中动态的添加 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 之间传递数据的一些示例方法。你可以根据自己的需求选择最适合的方法。