znl_12 2013-01-30 07:05 采纳率: 0%
浏览 1992

使用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) 
    {
     } 
  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2022-12-19 14:13
    关注

    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 之间传递数据的一些示例方法。你可以根据自己的需求选择最适合的方法。

    评论

报告相同问题?

悬赏问题

  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。