我的应用程序中没有调用onActivityResult

时间:2015-04-23 12:45:37

标签: 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, Intent intent) {

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

    if(requestCode == 121245) {

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

为什么我的Toast没有显示?

3 个答案:

答案 0 :(得分:9)

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

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

Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);

然后当B活动结束时,活动的onActivityResult被调用,你可以做任何你想做的事。

这是一个图表,它是否有助于您了解应用程序的流程

diagram

答案 1 :(得分:5)

你有一点错误

在A班应该是:

Intent i = new Intent(A.this, B.class);
startActivityForResult(i, 121245);

在B班返回:

Intent i = new Intent();
setResult(RESULT_OK, i);
finish();

并在A

处理
@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        
    }
}

答案 2 :(得分:1)

onActivityResult() 

必须是 A 活动的一部分,您的 B 活动会将一些数据返回 A 然后onActivityResult()将被召唤。