【问题标题】:What is the best way to pass data from one fragment to another in android? [duplicate]在android中将数据从一个片段传递到另一个片段的最佳方法是什么? [复制]
【发布时间】:2015-04-28 06:32:18
【问题描述】:

在 android 中将数据从一个片段传递到另一个片段的最佳方法是什么?我知道 Otto 和 Event Bus 可以解决这个问题,但是非库方式到底应该怎么做呢?

回答前请考虑以下

http://developer.android.com/training/basics/fragments/communicating.html

通常您会希望一个 Fragment 与另一个 Fragment 进行通信,例如根据用户事件更改内容。所有 Fragment 到 Fragment 的通信都是通过关联的 Activity 完成的。两个 Fragment 永远不应该直接通信。

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    你可以使用 Bundle 来做到这一点

    MyFragment fragment = new MyFragment ();
    Bundle data= new Bundle();
    data.putString("Key", "Value");
    fragment .setArguments(args);    
    getFragmentManager().beginTransaction().add(R.id.container, fragment ).commit();
    

    在另一个片段 onCreate by 中检索捆绑包

    String value = getArguments().getString("Key");
    

    【讨论】:

    • 这就是创建新片段时的做法,但我认为问题是当您已经有两个片段并需要在它们之间发送数据时该怎么办。
    • 在回答之前请考虑关注developer.android.com/training/basics/fragments/… 通常您希望一个片段与另一个片段进行通信,例如根据用户事件更改内容。所有 Fragment 到 Fragment 的通信都是通过关联的 Activity 完成的。两个 Fragment 永远不应该直接通信。
    【解决方案2】:

    如果你不使用 Otto / EventBus 那么你应该使用监听器接口。

    【讨论】:

      【解决方案3】:

      在您的 MainActivity 中实现一个侦听器并将值从 MainActivity 传递给另一个片段。 Fragment 通常用作可重用组件,最好在 MainActivity 中使用侦听器接口来减少 Fragment 之间的耦合。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-14
        • 1970-01-01
        • 1970-01-01
        • 2018-04-16
        • 2013-01-29
        相关资源
        最近更新 更多