调用的第三个活动将其结果返回到第一个活动,而不是将结果发送到第二个活动?
问题描述:
场景:调用的第三个活动将其结果返回到第一个活动,而不是将结果发送到第二个活动?
- 第一项活动始于startActivityForResult秒活动
- 次活动开始第三个活动与startActivityForResult
预期结果: 三(最后)活动设置这是对陷入结果秒 activity's onActivityResult
当前显示结果: 三(最后)活动设置这是对第一活动的onActivityResult抓到结果
如何设置上,将在第二活动的第三个被抓的第三个活动的结果(最后)活动将由此被捕获到第二个活动的onActivityResult?
一些代码片段:
第一项活动
public class TestProjActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
Log.i("TAAAG", "1st activity - startActivityForResult");
Intent intent = new Intent(TestProjActivity.this, Activ2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivityForResult(intent, 1008);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("TAAAG", "1st activity - onActivityResult");
if (resultCode == RESULT_OK) {
Log.i("TAAAG", String.valueOf(requestCode));
switch (requestCode) {
case 1008:
String info = data.getExtras().getString("KEY1");
Log.i("TAAAG", "1st activity - onActivityResult - printing result");
Log.i("TAAAG", info);
break;
}
}
}
}
次活动
public class Activ2 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TAAAG", "2nd activity - startActivityForResult");
Intent intent = new Intent(Activ2.this, Activ3.class);
startActivityForResult(intent, 1009);
Intent intent2 = new Intent();
intent2.putExtra("KEY1", "VALUE1");
setResult(RESULT_OK, intent2);
finish();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.i("TAAAG", "2nd activity - onActivityResult");
if (resultCode == RESULT_OK) {
Log.i("TAAAG", String.valueOf(requestCode));
switch (requestCode) {
case 1009:
String info = data.getExtras().getString("KEY2");
Log.i("TAAAG", "2nd activity - onActivityResult - printing result");
Log.i("TAAAG", info);
break;
}
}
}
}
第三个活动
public class Activ3 extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i("TAAAG", "3rd activity - Inserting Value and finishing");
Intent intent = new Intent();
intent.putExtra("KEY2", "VALUE2");
setResult(RESULT_OK, intent);
finish();
}
}
答
我想你应该在第二个活动....
答
使用活动标志,以转发导致超活性OnCreate中最后一行删除finish();
:
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+0
拯救生命!!!! – 2015-09-01 10:10:18
+0
这应该被标记为接受 – 2017-02-24 03:32:07
您正在完成第二个活动j在你启动你的第三个之后。所以从我所知道的第一个活动会收到结果,因为第二个活动不再运行。尝试删除完成();从Activty2创建并看看会发生什么! – 2012-02-20 12:18:14
是的,谢谢 - 它解决了这个问题! – Chaiavi 2012-02-20 12:36:02