Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当从第3个活动调用setResult时,将数据返回到第1个活动_Android_Onactivityresult - Fatal编程技术网

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

Android 当从第3个活动调用setResult时,将数据返回到第1个活动,android,onactivityresult,Android,Onactivityresult,我有三项活动。在第一个活动中,调用onClick方法时,方法中包含startActivityForResult,它将引导您进入活动2。然后,从活动2,您可以单击另一个按钮,进入活动3 在活动3中,我想调用setResult方法,然后,它将完成活动并将您带回活动1,其中包含活动3中的数据 但是,由于某些原因,数据为null,并且从不调用Activity.RESULT_OK 我该怎么办?谢谢 在活动一中: @Override public void onClick(View view) {

我有三项活动。在第一个活动中,调用onClick方法时,方法中包含startActivityForResult,它将引导您进入活动2。然后,从活动2,您可以单击另一个按钮,进入活动3

在活动3中,我想调用setResult方法,然后,它将完成活动并将您带回活动1,其中包含活动3中的数据

但是,由于某些原因,数据为null,并且从不调用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();
活跃

  @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) {

        }
    }

}

我们不需要通过简单地调用StartActivity来启动活动3,而需要通过StartActivityForResult来调用活动3。因此,Activity3将在ActivityResult上将值返回给Activity2,您可以从中将值传递给Activity1

因此,您按以下顺序调用活动
activity1->activity2->activity3
,然后在
activity3
中执行
setResult()
,并期望
activity1
onActivityResult
中获得结果?是吗?@Bhargav是的,这就是我想要实现的。你知道
setResult
是如何工作的吗?当您以特定顺序调用活动时,
setResult
以与启动活动相反的顺序返回,因此您需要做的是在
activity2
中生成
onActivityResult()
,并在
setResult()
中传递收到的结果(数据),但是,我想这是个坏主意,因为我传递的是相对较大的字节数组,这可能会使我的应用程序速度降低很多。我想不出任何其他方法,除非你将activity2和Activity3分解为片段并将其附加到activity1