1-是我的第一个活动(主要) 2-是我的第二项活动 3 - 是我的第三项活动
我希望从1开始运行2然后运行2运行3,然后从3开始运行数据并将其返回到1.希望你明白的人。
这是我的代码:
Runing 2 form 1 liek this:
Intent intent = new Intent(getApplicationContext(),MessageBox.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivityForResult(intent,5);
然后像这样从2运行3:
Intent intent = new Intent(getApplicationContext(),ImageReceiver.class);
startActivityForResult(intent,5);
然后在3我有这样的事情:
setResult(10);
finish();
所以我在2中设置结果得到这个结果我有:
if(requestCode==5)
{
if(resultCode==10)
{
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
setResult(5,intent);
finish();
}
}
然后在1中我得到了:
if(requestCode==5)
{
if(resultCode==5)
{
//here i am taking data from 3
}
}
问题是我甚至无法在logcat中打开2个coz:
04-23 22:13:15.579:E / AndroidRuntime(15313):android.util.AndroidRuntimeException:在请求结果时使用FORWARD_RESULT_FLAG
我真的不知道该怎么做。请看这段代码。
答案 0 :(得分:17)
从1开始2时不能这样做:
Intent intent = new Intent(getApplicationContext(), MessageBox.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivityForResult(intent,5);
这将抛出您获得的异常。您不能同时使用FLAG_ACTIVITY_FORWARD_RESULT
和startActivityForResult()
。
如果你想让1从3获得结果,那么你需要从1开始2:
Intent intent = new Intent(getApplicationContext(), MessageBox.class);
startActivityForResult(intent, 5);
然后像这样从2开始3:
Intent intent = new Intent(getApplicationContext(), ImageReceiver.class);
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(intent);
finish();
这告诉Android,活动3(ImageReceiver
)应该将其结果转发回调用活动2(MessageBox
)的活动。当活动3设置其结果并结束时,将调用活动1中的onActivityResult()
,并从活动3发送结果数据。
答案 1 :(得分:1)
在活动1中注释掉这一行
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
和活动2中的这一行
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
你应该全力以赴。