Android startActivityForResult来自A->;B->;(完成B)——>;并将结果从C发送回A

Android 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本身的上下文为结果启动它,这

活动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。

我建议实现一种模式,在该模式中,您可以将结果数据保存在活动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中静态可用就这么简单,不要使用活动的静态上下文。它非常好,除非它以某种方式泄漏。