2012-12-18 51 views
0

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

+0

如果你想返回一些数据,结果,你可以用'startActivityForResult'开始第二个'Activity'。 – Luksprog

回答

2

您需要使用startActivityForResult()开始第二个活动。在完成第二个活动之前,您需要将数据添加到捆绑中,然后将此结果设置为意图。

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"); 
} 

我不知道如果我有它完全正确的记住它在我头顶,但应该足以让你开始我的想法。

+0

谢谢你Boardy。我已经从该片段调用了getActivity()。startActivityForResult(),它工作。 –

+0

但捆绑不接受putextra! intent.putExtra(intent)是什么意思; ? –

+0

这应该是“intent.putExtra(bundle)”。我已经纠正了答案 – Boardy

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); 
    } 
+0

这不是他想要的 – nadav

相关问题