【问题标题】:Returning data back to 1st Activity when setResult is called from 3rd Activity从第 3 个活动调用 setResult 时将数据返回到第 1 个活动
【发布时间】:2016-02-24 12:27:24
【问题描述】:

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

在 Activity 3 中,我想调用 setResult 方法,然后它会完成 Activity 并带着来自 Activity 3 的数据返回 Activity 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) {

        }
    }

}

【问题讨论】:

  • 因此您按此顺序调用活动activity1->activity2->activity3 然后在activity3 中执行setResult() 并期望activity1onActivityResult 中得到结果?对吗?
  • @Bhargav 是的,这就是我想要实现的目标。
  • 您了解setResult 的工作原理吗?当您按特定顺序调用活动时,setResult 以相反的顺序返回活动启动,因此您需要做的是在 activity2 中创建 onActivityResult() 并将您收到的结果(数据)传递到 @987654334 @
  • 我正要建议这样做,但是,我认为这不是一个好主意,因为我要传递相对较大的字节数组,这可能会大大降低我的应用程序的速度。跨度>
  • 好吧,我想不出任何其他方式,除非您将活动 2 和 3 分成片段并将其附加到活动 1

标签: android onactivityresult


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多