如何将数据从一个片段发送到另一个片段,这些片段由不同的活动托管?

时间:2016-06-27 20:32:01

标签: android android-fragments android-activity

我有活动A托管的片段A和活动B托管的片段B.片段A调用活动B.我想将数据发送回片段B到片段A.我尝试覆盖setResult但它没有&# 39;工作。

2 个答案:

答案 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然后,任何需要知道发生了什么的事情都可以为它注册一个接收器。