Android onActivityResult未在我的应用程序中调用

Android onActivityResult未在我的应用程序中调用,android,Android,我有两个活动“A”和“B” 在我的“A”活动中,我使用startActivityForResult: Intent i = new Intent(A.this, B.class); setResult(RESULT_OK, i); startActivityForResult(i, 121245); finish(); 这是我的“B”活动的代码: @Override public void onActivityResult(int requestCode, int resultCode, In

我有两个活动“A”和“B”

在我的“A”活动中,我使用startActivityForResult:

Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
finish();
这是我的“B”活动的代码:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    Toast.makeText(B.this, "onActivityResult", Toast.LENGTH_SHORT).show();          

    if(requestCode == 121245) {

        if (resultCode == RESULT_OK) 
            //make something        
    }
}

为什么我的祝酒词没有显示?

onActivityResult
将在为结果启动活动的活动上调用,这意味着调用
startActivityForResult
方法

这意味着,如果您希望在某个活动中的B活动完成时收到通知,您将首先在某个活动中启动B活动,就像您在示例代码中所做的那样

Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
然后,当B活动完成时,将调用活动的onActivityResult
,在那里您可以做任何您想做的事情

如果有助于您理解应用程序的流程,那么这里有一个图表

onActivityResult() 


必须是A活动的一部分,您的B活动将返回一些数据到A,然后将调用
onActivityResult()

您有一个小错误

在课堂上应:

Intent i = new Intent(A.this, B.class);
startActivityForResult(i, 121245);
在B班返回:

Intent i = new Intent();
setResult(RESULT_OK, i);
finish();
并以最快的速度处理

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {

    Toast.makeText(B.this, "onActivityResult", Toast.LENGTH_SHORT).show();          

    if(requestCode == 121245) {

        if (resultCode == RESULT_OK) 
            //make something        
    }
}

使用当前代码试图做什么?您在错误的活动中处理它。在课堂上写下你们的祝酒词,因为这是从B开始的。嘿,你们需要阅读。你走错了方向。令人惊讶的是,你投了两张赞成票<代码>startActivityForResult(i,121245);完成()活动A是否可以实时侦听结果?是的,但是在调用startActivityForResultCan I finish()“A”活动后,不应该对活动A进行finish()”处理?我认为完成活动会阻止它接收回调。你为什么要完成它?@PankajKumar抱歉,这是一个快速复制粘贴,并不是要添加到那里我很高兴你让它工作了!