将数据发送到android中另一个活动的片段

时间:2012-12-18 16:40:29

标签: android android-activity fragment

我有一个活动,它是几个片段的容器。其中一个片段开始另一个活动,从第二个活动开始,我想将一些数据发送到其中一个片段。我怎样才能做到这一点?基本上第一个活动超出了第二个活动,当第二个活动关闭时,其中一个EditView将使用新值更新。我可以使用一个意图但如果活动已经开始我怎么能发送它?谢谢。

2 个答案:

答案 0 :(得分:2)

如果要将数据从片段传递回其包含的活动,可以通过声明接口处理程序并通过该接口传递数据来完成。并确保您的包含活动实现这些接口。

例如:在您的片段中,按如下方式声明此接口:

 public interface CallBackInterface {
      public void onCallBack(String param);
 }

 //Declare this interface in your fragment
 CallBackInterface callBk;

 @Override
 public void onAttach(Activity a) {
     super.onAttach(a);
     callBk= (CallBackInterface ) a;
 } 

在您的片段中,当您需要处理数据传递时,只需在" callBk"上调用它。对象:

 public void  callBack(String param) {
     callBk.onCallBack(param);
 }

最后,在您实现CallBackInterface的包含活动中......

  @Override
  public void onCallBack(String param) {
       Log.d("TAG","hi " + param);
  }

答案 1 :(得分:2)

您需要使用startActivityForResult()开始第二项活动。在完成第二个活动之前,您需要将数据添加到一个包中,将其传递给一个intent,然后将结果设置为intent。

Bundle bundle = new Bundle();
bundle.putString("myData", "myValue");
Intent intent = new Intent();
intent.putExtra(bundle);
setResult(intent, 0);
finish();

然后在活动1中应该有一个onactivityresult方法,该方法从意图中检索值并将其设置在片段中的所需位置

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Bundle bundle = data.getData();
string value = bundle.getString("myData");
}

我不确定我是否完全正确地记住它在我的脑海中,但应该足以让你开始我想。