我有活动A托管的片段A和活动B托管的片段B.片段A调用活动B.我想将数据发送回片段B到片段A.我尝试覆盖setResult
但它没有&# 39;工作。
答案 0 :(得分:1)
从FragmentA
使用startActivityForResult()方法调用ActivityB
例如:
Intent i = new Intent(getActivity(), ActivityB.class);
startActivityForResult(i, 12345);
在ActivityB中设置要返回ActivityA的数据。如果您不想返回,请不要设置任何。
例如:在ActivityB中,如果要发回数据:
Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();
如果您不想返回数据:
Intent returnIntent = new Intent();
setResult(Activity.RESULT_CANCELED, returnIntent);
finish();
现在,在FragmentA类中,编写onActivityResult()方法的以下代码。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 12345) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}//onActivityResult
答案 1 :(得分:0)
使用https://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html然后,任何需要知道发生了什么的事情都可以为它注册一个接收器。