从第3个活动调用setResult时,将数据返回到第1个活动

时间:2016-02-24 12:27:25

标签: android onactivityresult

我有3项活动。在第一个Activity中,使用startActivityForResult调用onClick方法,该方法将您带到Activity 2.然后从Activity 2中,您可以单击另一个将您带到Activity 3的按钮。

在活动3中,我想调用setResult方法,之后,它将完成Activity并使用活动3中的数据将您带回活动1。

但是,由于某种原因,数据为空,从不调用Activity.RESULT_OK。

我该如何处理?感谢。

在活动一:

    @Override
public void onClick(View view) {

    IVID = view.getId();

    Intent i = new Intent(this, PhotoSelectActivityMultiple.class);
    startActivityForResult(i, 1);


}

在活动2中:

     Intent returnIntent = new Intent(getApplicationContext(), CollageGrid.class);
                returnIntent.putStringArrayListExtra("imageurls", mDownloadURL);
                startActivity(returnIntent);
                overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

在活动3中:

            Intent intent=new Intent();
            intent.putExtra("part",byteArray);
            setResult(1, intent);
            finish();

在onActivity中

  @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == 1) {
        if(resultCode == Activity.RESULT_OK) {
            updateThis = (ImageView) findViewById(IVID);

            byte[] byteArray = data.getByteArrayExtra("part");
            Bitmap current_bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
            updateThis.setImageBitmap(current_bmp);
        }
        if (resultCode == Activity.RESULT_CANCELED) {

        }
    }

}

1 个答案:

答案 0 :(得分:0)

不是通过简单地调用StartActivity来启动Activity 3,我们还需要通过StartActivityForResult调用activity 3。因此,Activity3将值返回到Activity2 OnActivityResult,您可以将值传递给Activity1。