Android startActivityForResult来自A->;B->;(完成B)——>;并将结果从C发送回A
活动A位于堆栈的根,然后我从B开始,然后从B开始,完成B。。因此,堆栈现在是A-CAndroid startActivityForResult来自A->;B->;(完成B)——>;并将结果从C发送回A,android,stack,start-activity,Android,Stack,Start Activity,活动A位于堆栈的根,然后我从B开始,然后从B开始,完成B。。因此,堆栈现在是A-C 但是,当我在C中设置结果并完成它时,活动A没有收到此结果。。这是可能的吗?您可以完成活动B,结果是“启动活动C”,然后针对活动a的结果启动活动C。您可以完成活动B,结果是“启动活动C”,然后针对活动a的结果启动活动C。而不是使用活动B的上下文启动活动C,使用活动A本身的上下文为结果启动它,这样,当您在C中设置结果并完成时,它将返回到A。而不是使用活动B的上下文启动活动C,而是使用活动A本身的上下文为结果启动它,这
但是,当我在C中设置结果并完成它时,活动A没有收到此结果。。这是可能的吗?您可以完成活动B,结果是“启动活动C”,然后针对活动a的结果启动活动C。您可以完成活动B,结果是“启动活动C”,然后针对活动a的结果启动活动C。而不是使用活动B的上下文启动活动C,使用活动A本身的上下文为结果启动它,这样,当您在C中设置结果并完成时,它将返回到A。而不是使用活动B的上下文启动活动C,而是使用活动A本身的上下文为结果启动它,这样,当您在C中设置结果并完成时,它将返回到A。我建议实现一种模式,在该模式中,您可以将结果数据保存在活动C中,只需完成活动C,以便活动A显示在onresume()的顶部对于活动A,您可以在某些条件下访问模式中的数据,并执行必要的操作…我建议实施一种模式,在该模式中,您可以将结果数据保存在活动C中,只需完成活动C,以便活动A显示在顶部的onresume()中对于活动A,您可以在某些条件下访问模式中的数据,并执行必要的操作…如果您希望从活动C获得传递回活动A的结果:
class A extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
// code.........
Button button=findViewById(R.id.btn_id);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v)
{
Intent intent=new Intent(A.this,B.class);
startActivityForResult(intent, 1001);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK )
{
if(requestCode==1001)
{
Intent intent=new Intent(A.this,C.class);
startActivityForResult(intent, 1002);
}
else if(requestCode==1003)
{
//here you will get the result form c
}
}
}
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
doSomeStuffIfRequestCodeMatched()
}
在活动A中呼叫B:
Intent showB = new Intent(ActivityA, ActivityB);
startActivityForResult(showB, RequestCode);
在活动B中调用C:
Intent showC = new Intent(ActivityC);
showC.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(showC);
finish();
在活动C中:
//set the result code and close the activity
Intent result = new Intent();
setResult(RESULT_OK, result);
finish();
在活动A中:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
doSomeStuffIfRequestCodeMatched()
}
如果希望将活动C的结果传递回活动A:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
doSomeStuffIfRequestCodeMatched()
}
在活动A中呼叫B:
Intent showB = new Intent(ActivityA, ActivityB);
startActivityForResult(showB, RequestCode);
在活动B中调用C:
Intent showC = new Intent(ActivityC);
showC.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(showC);
finish();
在活动C中:
//set the result code and close the activity
Intent result = new Intent();
setResult(RESULT_OK, result);
finish();
在活动A中:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
doSomeStuffIfRequestCodeMatched()
}
同样的想法+1:-)我如何从B中获取活动A的上下文?让它从活动A中静态可用就这么简单,不要使用活动的静态上下文。它非常好,除非它以某种方式泄漏。同样的想法+1:-)我如何从B中获取活动A的上下文?让它从活动A中静态可用就这么简单,不要使用活动的静态上下文。它非常好,除非它以某种方式泄漏。