我有一个活动,它是几个片段的容器。其中一个片段启动另一个活动,我想从第二个活动向其中一个片段发送一些数据。我怎样才能做到这一点?基本上,第一个活动会超出第二个活动,并且当第二个活动关闭时,其中一个 EditView 将使用新值更新。我本可以使用意图,但如果活动已经开始,我该如何发送?谢谢你。
问问题
4285 次
2 回答
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);
}
于 2012-12-18T16:59:49.190 回答
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");
}
我不确定我是否完全正确地记住了它,但我认为应该足以让你开始。
于 2012-12-18T17:03:54.073 回答