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

ale*_*e91 0 android

我有两个活动"A"和"B".

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

Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
finish();
Run Code Online (Sandbox Code Playgroud)

这是我的"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        
    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我的Toast没有显示?

Pas*_*äki 9

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

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

Intent i = new Intent(A.this, B.class);
setResult(RESULT_OK, i);
startActivityForResult(i, 121245);
Run Code Online (Sandbox Code Playgroud)

然后当B活动结束时onActivityResult调用一个活动,你可以做任何你想做的事情.

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

图


小智 5

你有一点错误

在A班应该是:

Intent i = new Intent(A.this, B.class);
startActivityForResult(i, 121245);
Run Code Online (Sandbox Code Playgroud)

在B级返回:

Intent i = new Intent();
setResult(RESULT_OK, i);
finish();
Run Code Online (Sandbox Code Playgroud)

并在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        
    }
}
Run Code Online (Sandbox Code Playgroud)