Android 将数据从一个片段传递到另一个片段

Android 将数据从一个片段传递到另一个片段,android,android-activity,android-fragments,bundle,Android,Android Activity,Android Fragments,Bundle,我有两个活动,即活动A和活动B 活动A包含片段AF1、AF2。 活动B包含片段BF1、BF2 目前我在AF1 我们如何将数据绑定从AF1传递到AF2? 我们如何将数据包从AF1传递到BF2? 第一种方法是使用接口。以下是步骤的分解: 在AF1片段中创建一个接口-将调用该接口中的方法,并通过传递给它的参数将数据传递回。在活动中,实现该接口并重写该方法。调用该方法后,可以在AF2中创建另一个方法,您可以轻松地调用并传递相应的值。 本教程介绍了上述过程: FragmentOne.java 在活动中,实

我有两个活动,即活动A和活动B

活动A包含片段AF1、AF2。 活动B包含片段BF1、BF2

目前我在AF1

我们如何将数据绑定从AF1传递到AF2? 我们如何将数据包从AF1传递到BF2?
第一种方法是使用接口。以下是步骤的分解:

在AF1片段中创建一个接口-将调用该接口中的方法,并通过传递给它的参数将数据传递回。在活动中,实现该接口并重写该方法。调用该方法后,可以在AF2中创建另一个方法,您可以轻松地调用并传递相应的值。 本教程介绍了上述过程:

FragmentOne.java

在活动中,实现接口并重写上述方法:

public class ActivityOne extends Activity implements FragmentOne.OnSomethingCllickedListener{

  @Override
  public void onCreate(Bundle saveInstanceState){
   /* as usual here */
  }

  @Override
  public void updateActivity(int position){
     /* call FragmentTwo's method here to update the view based on the position of item clicked here*/
     FragmentTwo.updateView(position);
  }
}
其次,要将活动与片段分离,请使用EventBus库。这非常简单,如下所示:

下载jar文件并将其添加到项目中。 创建一个事件类 在活动中注册事件在onDestroy中注销 当您想要通知事件的活动时,只需调用EventBus的post方法并传回相应的数据。 在活动内部,您需要一个方法onEventYourEventClassName event,然后您可以根据需要分别将值传递给片段。 我希望这有帮助。

传递和检索数据的代码:
使用接口将活动中的一个片段与另一个片段进行通信&使用异步消息bindingintent.putExtrabundle将片段与另一个活动的片段进行通信。片段还可以侦听OneEvent本身,直接在片段之间传递,这是真的;因此,在本例中,您的活动不必了解任何有关您的片段的信息-强烈建议
public class ActivityOne extends Activity implements FragmentOne.OnSomethingCllickedListener{

  @Override
  public void onCreate(Bundle saveInstanceState){
   /* as usual here */
  }

  @Override
  public void updateActivity(int position){
     /* call FragmentTwo's method here to update the view based on the position of item clicked here*/
     FragmentTwo.updateView(position);
  }
}
Bundle bundle =new Bundle();

bundle.putString("message", message);

Frag1 _fragment = new Frag1();

fragmentTransaction.replace(android.R.id.content, _fragment);

fragmentTransaction.commit();

Bundle bundle=getArguments(); //get data

if(bundle!=null)
{
   message=bundle.getString("message")  ;
}