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

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?