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